あなたの問題はあなたのGROUP BY
が原因であると私はかなり確信しています 句。それを使用する目的がわからないが、それなしで試してください。行が重複する場合は、SELECT DISTINCT
を使用してみてください 。その列に基づいて結果を並べ替えることが目的の場合は、ORDER BY
を使用します 。
また、receipt_no
を指定します WHERE
で2回 句は冗長です。これらの2つのテーブルはすでにその列で結合されているため、1つのテーブルでフィルタリングするだけで済みます。また、列名のスペースやコンマ、予約語と同じ名前の列など、いくつかの特別な例外を除いて、バッククォートは実際には必要ありません(他にもいくつかある場合があります)。バックティックが必要なように見える唯一の列は、date
です。 列ですが、その列でそれらを除外しても、問題はありません。どこにでもバックティックがあると、クエリが長くなり、読みにくくなります。彼らはそこにいても何も傷つけないので、それがあなたの好みであればあなたは彼らを残すことができますが、個人的には私はファンではありません。
上記の変更を加えてクエリを書き直しました。さらに、テーブルにエイリアスを付けてさらに短縮しました。これはパフォーマンスなどを改善するものではなく、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