Jsem si docela jistý, že váš problém je způsoben vaší GROUP BY
doložka. Nejste si jisti, jaký byl váš cíl při jeho použití, ale zkuste to bez něj. Pokud získáte duplicitní řádky, zkuste použít SELECT DISTINCT
. Pokud bylo vaším cílem seřadit výsledky na základě tohoto sloupce, použijte ORDER BY
.
Také zadáním receipt_no
dvakrát v WHERE
doložka je nadbytečná. Tyto dvě tabulky jsou již tímto sloupcem spojeny, takže vše, co musíte udělat, je filtrování v jedné tabulce. A zpětná zaškrtnutí nejsou ve skutečnosti nutná, s výjimkou některých speciálních výjimek, jako jsou mezery nebo čárky v názvu sloupce nebo sloupce pojmenované stejně jako vyhrazená slova (může to být i několik dalších). Jediný váš sloupec, který vypadá, že potřebuje zpětné zaškrtnutí, je date
sloupec, ale i když je vyloučíte v tomto sloupci, měli byste být v pořádku. Jen jsem zjistil, že zpětné zaškrtnutí všude dělá dotaz delší a hůře čitelný. Tím, že tam jsou, ničemu neublíží, takže je můžete nechat, pokud to chcete, ale osobně nejsem fanoušek.
Přepsal jsem váš dotaz se svými výše uvedenými úpravami a navíc jsem dal tabulkám aliasy, abych jej dále zkrátil. To nezlepšuje výkon ani nic jiného, pouze usnadňuje čtení 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