Jeg er ret sikker på, at dit problem skyldes din GROUP BY
klausul. Ikke sikker på, hvad dit mål var med at bruge det, men prøv uden det. Hvis du får dublerede rækker, så prøv at bruge SELECT DISTINCT
. Hvis dit mål var at sortere resultaterne baseret på den kolonne, så brug ORDER BY
.
Angivelse af receipt_no
to gange i WHERE
klausul er overflødig. Disse to tabeller er allerede forbundet af den kolonne, så at filtrere den i én tabel er alt, hvad du behøver at gøre. Og backticks er egentlig ikke nødvendige bortset fra nogle særlige undtagelser, som mellemrum eller kommaer i kolonnenavnet, eller kolonner, der hedder det samme som reserverede ord (kan også være et par andre). Din eneste kolonne, der ser ud til at have brug for backticks, er date
kolonne, men selv om du ekskluderer dem i den kolonne, burde du stadig have det fint. Jeg oplever bare, at backticks overalt gør forespørgslen længere og sværere at læse. De skader ikke noget ved at være der, så du kan forlade dem, hvis det er din præference, men personligt er jeg ikke fan.
Jeg omskrev din forespørgsel med mine ændringer nævnt ovenfor, plus jeg gav tabellerne aliasser for at forkorte den yderligere. Dette forbedrer ikke ydeevnen eller noget, det gør det bare nemmere at læse 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