すでに多くの左参加の質問がありますが、それでも私はこの問題に完全に指を置くことができません。WHERE条件は、移動するのが賢明ではないように見えます。
問題は、4行が返されるはずですが、1行だけが返されることです。
左結合条件をチェックすると、左結合ごとに1行が返されます。これは、テーブル内のレコード数に対して正しいですが、以下のクエリは4ではなく1レコードを返しますが、4を返す方法がわかりません。 、 まだ。
クエリは次のとおりです:(結果は4ではなく1になり、4が期待されます)
SELECT
list.uid,
list.business_uid,
list.creator_name,
business.company_name,
list_alias.uid AS list_alias_uid,
list_alias.alias AS list_alias,
list_member.uid AS list_member_uid,
mailbox.full_name AS list_member_name,
mailbox.email_address AS list_member_email_address
FROM
mailbox,
business,
list
LEFT JOIN
list_alias ON list_alias.list_uid=list.uid
LEFT JOIN
list_member ON list_member.list_uid=list.uid
WHERE
list.business_uid='1'
AND list.business_uid=business.uid
AND mailbox.uid=list_member.mailbox_uid
ORDER BY
list.full_name ASC
データ:
ビジネスUID1には4つのリストがあります
SELECT * FROM list WHERE business_uid=1
-4つの結果が得られます
SELECT * FROM list_alias WHERE list_uid IN (SELECT uid FROM list WHERE business_uid=1)
--1つの結果が得られます
SELECT * FROM list_member WHERE list_uid IN (SELECT uid FROM list WHERE business_uid=1)
--1つの結果が得られます
私がチェックできることについてのポインタは大歓迎です。
テーブルサンプルデータ:
リスト:
uid | business_uid | creator_name | full_name
--------------------------------------------------
1 1 List Maker Subscribe to W
2 1 List Maker Subscribe to X
3 1 List Maker Subscribe to Y
4 1 List Maker Subscribe to Z
仕事:
uid | company_name
-------------------
1 List Company
list_alias:
uid | list_uid | alias
----------------------------------------
1 1 subscriber@list-url.com
list_member:
uid | list_uid | mailbox_uid
------------------------------------
1 1 1
メールボックス:
uid | full_name | email_address
-------------------------------
1 I am He me@me.com