sql >> Databasteknik >  >> RDS >> Mysql

Jag kan inte få den här mysql-anslutningsfrågan att producera det önskade resultatet

Jag är ganska säker på att ditt problem beror på din GROUP BY klausul. Inte säker på vad ditt syfte var med att använda det, men försök utan det. Om du får dubbletter av rader, försök att använda SELECT DISTINCT . Om ditt mål var att sortera resultaten baserat på den kolumnen, använd sedan ORDER BY .

Ange även receipt_no två gånger i WHERE klausulen är överflödig. Dessa två tabeller är redan sammanfogade av den kolumnen, så att filtrera den i en tabell är allt du behöver göra. Och backticks är egentligen inte nödvändiga förutom vissa speciella undantag, som mellanslag eller kommatecken i kolumnnamnet, eller kolumner som heter samma som reserverade ord (kan vara några andra också). Din enda kolumn som ser ut att behöva backticks är date kolumnen, men även om du utesluter dem i den kolumnen borde du fortfarande klara dig. Jag tycker bara att backticks överallt gör frågan längre och svårare att läsa. De skadar ingenting av att vara där, så du kan lämna dem om du föredrar det, men personligen är jag inget fan.

Jag skrev om din fråga med mina ändringar som nämns ovan, plus att jag gav tabellernas alias för att förkorta den ytterligare. Detta förbättrar inte prestanda eller något, bara gör det lättare att läsa IMO:

SELECT DISTINCT
    b.receipt_no, client, operator, discount, total_amount,
    amount_paid, balance, `date`, jobtitle, quantity,
    amount, date_paid, old_balance, debtor_amount_paid, new_balance
FROM
    booking b
    INNER JOIN jobtitle jt ON jt.bookingID = b.bookingID
    INNER JOIN first_graphics_debtors fgd ON fgd.receipt_no = b.receipt_no
WHERE
    b.receipt_no = '753263343'
ORDER BY
    jt.quantity


  1. Syftet med SQLAlchemy över MySQLdb

  2. Migrera en Oracle-databas från AWS EC2 till AWS RDS, del 4

  3. SQL-fråga:lista över alla ID:n som var aktiva under ett givet tidsintervall, sorterade efter deras starttid

  4. Kan inte importera MySQLdb - python - Windows 8.1