Jestem prawie pewien, że Twój problem wynika z Twojego GROUP BY
klauzula. Nie jesteś pewien, jaki był twój cel w użyciu tego, ale spróbuj bez tego. Jeśli otrzymasz zduplikowane wiersze, spróbuj użyć SELECT DISTINCT
. Jeśli Twoim celem było uporządkowanie wyników na podstawie tej kolumny, użyj ORDER BY
.
Ponadto, określając receipt_no
dwa razy w WHERE
klauzula jest zbędna. Te dwie tabele są już połączone tą kolumną, więc wystarczy przefiltrować je w jednej tabeli. A znaki wsteczne nie są tak naprawdę potrzebne, z wyjątkiem pewnych specjalnych wyjątków, takich jak spacje lub przecinki w nazwie kolumny lub kolumny o nazwach takich samych jak słowa zastrzeżone (może być też kilka innych). Jedyną Twoją kolumną, która wygląda na to, że potrzebuje backticków, jest date
kolumna, ale nawet wykluczenie ich w tej kolumnie, nadal powinno być w porządku. Po prostu uważam, że wszędzie widoczne znaki wsteczne powodują, że zapytanie jest dłuższe i trudniejsze do odczytania. Nic nie krzywdzą będąc tam, więc możesz je zostawić, jeśli masz takie preferencje, ale osobiście nie jestem ich fanem.
Przepisałem twoje zapytanie z moimi modyfikacjami wspomnianymi powyżej, a także nadałem tabelom aliasy, aby je jeszcze skrócić. Nie poprawia to wydajności ani nic, po prostu ułatwia czytanie 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