左の結合は役に立たない。 WHERE句のsubscriber_dataに条件があるため、そのサブクエリは一致するsubscriber_dataがない行を返しません。したがって、INNER JOINを使用した場合と同じように効果的に機能します。その条件を左の結合条件に追加する必要がありますが、このクエリレイアウトでは不可能です。外部クエリの値は、内部クエリの結合条件では許可されません。
あなたはそれを変更することができますが、3つのテーブルを結合する必要があります.3つのテーブルを結合する必要があります。中間テーブル、subscriber_dataは、それらをすべてリンクしています。それは本当に意味をなさない。
またはcustomfieldsはオプションのテーブルですが、その場合はテーブルを逆にしたり、RIGHT JOINを使用したりしてください。
結論として、私はあなたがこれを書くことを意味したと思う:
select
s.emailaddress,
GROUPCONCAT(IFNULL(f.fieldid, '') SEPARATOR '","')
from
list_subscribers s
inner join subscribers_data d on d.subscriberid = s.subscriberid
left join customfields f on f.fieldid = d.fieldid
where
d.fieldid in (2,4,12,13,14,15,17,19,20,21,22,23,16,26,27)
group by
s.emailaddress
または、加入者のために記入されたフィールドのIDを列挙しますか?その場合は、次のようになります。
select
s.emailaddress,
GROUPCONCAT(IFNULL(d.fieldid, '') SEPARATOR '","')
from
list_subscribers s
cross join customfields f
left join subscribers_data d on
d.subscriberid = s.subscriberid and
d.fieldid = f.fieldid
where
f.fieldid in (2,4,12,13,14,15,17,19,20,21,22,23,16,26,27)
group by
s.emailaddress