ホームページ >データベース >mysql チュートリアル >MySQL で包括的なデータを取得するために GROUP_CONCAT を LEFT JOIN とともに使用する方法
MySQL: 包括的なデータ取得に LEFT JOIN を使用した GROUP_CONCAT の利用
MySQL の「GROUP_CONCAT」関数を利用した最近のデータベース クエリで、結合時に問題が発生しました複数のテーブル。意図された結果はチケットとそれに対応するソリューションのリストを取得することでしたが、クエリは予期しない結果を返していました。
提供された SELECT ステートメントは、LEFT JOIN を使用してチケット情報と連結されたソリューションの文字列を取得しようとしました。 「チケット」テーブルと「ソリューション」テーブル。ただし、結果は満足のいくものではなく、クエリは最初のチケットの詳細と両方のチケットの解決策を含む単一行を返しました。
この問題を解決するには、サブクエリを利用して GROUP_CONCAT を実行する代替クエリを使用できます。 「ソリューション」テーブルの操作。更新されたクエリは次のとおりです。
SELECT t.*, x.combinedsolutions FROM TICKETS t LEFT JOIN (SELECT s.ticket_id, GROUP_CONCAT(s.solution) AS combinedsolutions FROM SOLUTIONS s GROUP BY s.ticket_id) x ON x.ticket_id = t.ticket_id
このクエリでは、サブクエリを使用して各チケットの連結ソリューションを計算します。サブクエリの結果は、LEFT JOIN を使用して「Tickets」テーブルに結合されます。これにより、各チケットが意図したとおりに、対応するソリューションとともに返されるようになります。
または、次のクエリは、ネストされたサブクエリを使用して同じ結果を得ることができます。
SELECT t.*, (SELECT GROUP_CONCAT(s.solution) FROM SOLUTIONS s WHERE s.ticket_id = t.ticket_id) AS combinedsolutions FROM TICKETS t
これらの改訂されたクエリの両方望ましい結果が正常に返され、チケットとそれに関連するソリューションの包括的なリストが提供されます。
以上がMySQL で包括的なデータを取得するために GROUP_CONCAT を LEFT JOIN とともに使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。