Sono abbastanza certo che il tuo problema sia dovuto al tuo GROUP BY
clausola. Non sono sicuro di quale fosse il tuo obiettivo nell'usarlo, ma prova senza di esso. Se ottieni righe duplicate, prova a utilizzare SELECT DISTINCT
. Se il tuo obiettivo era ordinare i risultati in base a quella colonna, utilizza ORDER BY
.
Inoltre, specificando il receipt_no
due volte nel WHERE
la clausola è ridondante. Queste due tabelle sono già unite da quella colonna, quindi filtrarle in una tabella è tutto ciò che devi fare. E i backtick non sono realmente necessari ad eccezione di alcune eccezioni speciali, come spazi o virgole nel nome della colonna, o colonne che hanno lo stesso nome delle parole riservate (potrebbero essercene anche alcune altre). L'unica colonna che sembra aver bisogno di backtick è la date
colonna, ma anche escludendoli su quella colonna, dovresti comunque andare bene. Trovo solo che i backtick ovunque rendono la query più lunga e difficile da leggere. Non fanno male a nulla essendo lì, quindi puoi lasciarli se è la tua preferenza, ma personalmente non sono un fan.
Ho riscritto la tua query con le mie modifiche sopra menzionate, inoltre ho dato gli alias delle tabelle per abbreviarla ulteriormente. Questo non migliora le prestazioni o altro, semplifica solo la lettura di 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