我正在尝试从三个不同的表中获取数据,并使用尽可能少的查询和尽可能少的PHP代码输出它。
下面列出了我拥有的表格和每个表格中的列(仅列出相关列)。
exp_members(A)
columns:member_id,group_id
exp_brandrelations(B)
columns:member_id,brand_id
exp_du_mktgmats(C)
列:du_id,brand_id,日期
我想遍历属于group_id ='5'(来自A)的成员,确定哪些品牌被分配给每个成员(来自B),并获得与每个成员相对应的du_ids(来自C)的列表会员,已在过去24小时内被插入。
到目前为止,我可以获得第5组中的成员列表:
SELECT member_id, brand_id FROM exp_brandrelations
WHERE member_id IN (SELECT member_id FROM exp_members where group_id = 5)
我可以获得过去24小时内的du_ids列表:
SELECT du_id FROM exp_du_mktgmats
WHERE date >= DATE_SUB(NOW(), INTERVAL 1 DAY)
但我不确定如何最好地将它们捆绑在一起。
答案 0 :(得分:1)
应该这样做!
SELECT m.member_id, b.brand_id, d.du_id FROM exp_members m, exp_brandrelations b, exp_du_mktgmats d WHERE m.group_id = '5' AND m.member_id = b.member_id AND b.brand_id = d.brand_id AND d.date >= DATE_SUB(NOW(), INTERVAL 1 DAY)
答案 1 :(得分:1)
SELECT du_id FROM exp_members m, exp_brandrelations r, exp_du_mktgmats a
WHERE a.brand_id=r.brand_id AND r.member_id=m.member_id
AND date >= DATE_SUB(NOW(), INTERVAL 1 DAY)
AND m.group_id='5'
答案 2 :(得分:0)
SELECT
c.du_id
FROM
exp_du_mktgmats c
LEFT JOIN
exp_brandrelations b
ON
c.brand_id = b.brand_id
LEFT JOIN
exp_members a
ON
b.member_id = a.member_id
WHERE
a.group_id = 5
AND
c.date >= DATE_SUB(NOW(), INTERVAL 1 DAY);