メーリング リストに使用する MySQL データベースがあり、データを抽出する必要があるため、1 つのメンバー レコードが 1 つの行で表されます。メーリング リストは、ユーザー属性を EAV として保存します。次の SQL クエリを使用して必要なすべての詳細を抽出できますが、各メンバー レコードは複数の行を占有します。
SELECT a.id, a.name, a.email, b.id, b.name, b.email, c.title, d.val
FROM lists a, listmembers b, fields c, fieldsdata d
WHERE a.id = b.nl
AND b.id = d.eid
AND c.id = d.fid
ORDER BY b.id, a.id, b.name
これは次のようなものを返します。
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Firstname', 'John'
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Lastname', 'Smith'
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Country', 'UK'
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Town', 'Cambridge'
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Shoesize', '7'
'6', 'Mailing List name', 'owner@mailinglist.com', '10478', 'username', 'mailinglistmember@emailaddress.com', 'Favourite Colour', 'Purple'
SQL を使用してこれを 1 つの行にフラット化する必要があります。キーの名、姓、町、および国に関連する値のみが必要です。
データベースはそれほど大きくなく、fieldsdata テーブルが最大で約 5500 行あります。
本当の苦痛のように思えるので、どんな指摘もありがたく受け取るだろう. !