我对某个特定的SQL查询有点打嗝。我需要连接来自两个表的数据,同时还通过第三个表限制数据(但不一定是抓取它)。表格如下:
MEMBERS(member_id,first_name,last_name)
MEMBERS_GROUPS(member_id,group_id)
CHARGES(charge_id,member_id,charge_amount,status)
我需要为特定群组的所有成员查找所有费用,但我还想从MEMBERS表中获取名字和姓氏。我到目前为止提出的问题是:
select c.*, m.first_name, m.last_name
FROM charges c
LEFT JOIN member m
ON c.member_id=m.member_id
INNER JOIN members_groups mg
ON mg.group_id=1
我也尝试过:
SELECT c.*, m.first_name, m.last_name
FROM charges c, members_groups mg, member m
WHERE c.member_id=mg.member_id
AND mg.group_id = 1
AND c.status='Valid'
AND c.member_id = m.member_id
...但两者都不返回我需要的数据。我敢肯定我是在思考这个,但我不能为我的生活得到正确的价值观。我不断得到笛卡尔积的产品 - 无论如何,它显然会返回太多行和坏数据。
答案 0 :(得分:0)
也许您需要的是将members_groups
上的INNER JOIN限制为
这些行mg.member_id = m.member_id
:
SELECT c.*, m.first_name, m.last_name
FROM charges c
LEFT JOIN member m
ON c.member_id=m.member_id
INNER JOIN members_groups mg
ON mg.group_id=1
AND mg.member_id = m.member_id