sql >> データベース >  >> RDS >> Mysql

このmysql結合クエリを取得して目的の結果を生成できません

    あなたの問題はあなたの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
    


    1. 共有サーバーにあるMySQLデータベースにリモート接続する方法

    2. 先行ゼロを含めるためにcsv/Excelの方法にエクスポート

    3. Oracle®SQL*Loaderを使用したSQLServerデータの挿入

    4. AnsibleGalaxyのPostgreSQLPlanet