こんにちは、このクエリを書く正しい方法が見つからないようです。2 つのエンティティ Web サイトとクライアントがあり、id フィールドを介してそれらを関連付けるテーブルがあります。
これは多対多の関係です。つまり、Web サイトは複数のクライアントを持つことができ、クライアントは複数の Web サイトを持つことができます。
すべての Web サイトとそれらに属するクライアントを返すクエリを作成しようとしています。クライアントが関連付けられていない場合でも、すべての Web サイトを返したいと考えています。現時点で作業しているクエリは次のとおりです。
3 つのテーブルは、ost_sites = ウェブサイト、ost_site_auth = リレーショナル テーブル、ost_clients = クライアントです。
SELECT
ost_sites.site_id,
ost_sites.name,
ost_sites.site_url,
ost_site_auth.site_id,
ost_site_auth.client_id
ost_clients.client_id,
CONCAT_WS(" ", ost_clients.lastname, ost_clients.firstname) as name,
FROM ost_sites
LEFT JOIN (ost_site_auth, ost_clients)
ON (ost_sites.site_id=ost_site_auth.site_id
AND ost_site_auth.client_id=ost_clients.client_id)
GROUP BY ost_sites.name
結果セットを取得しましたが、すべてのサイトが返されるわけではなく、すべての行にクライアントが関連付けられていません。
助けてくれてありがとう!
編集:
テーブルの列は次のとおりです。
ost_site
site_id | name | site_url
1 facebook facebook.com
2 twitter twitter.com
3 tubmblr tumblr.com
4 google google.com
ost_site_auth
(認証リストに site_id = 3 がないことに注意してください)
id | site_id | client_id
1 1 1
2 1 2
3 2 1
4 2 2
5 4 1
6 4 4
ost_client
client_id | firstname | lastname
1 wilma flintstone
2 bam bam
3 fred flintstone
4 barney rubble
期待される出力:
site_id | name | site_url | client_name |
1 facebook facebook.com wilma flintstone
1 facebook facebook.com bam bam
2 twitter twitter.com wilma flintstone
2 twitter twitter.com bam bam
4 google google.com wilma flintstone
4 google google.com barney rubble
3 tumblr tumlr.com NULL