1

我对特定的 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

…但两者都没有返回我需要的数据。我确定我想太多了,但我无法终生获得正确的价值观。我不断得到似乎是笛卡尔积的东西——无论如何,它显然返回了太多的行和错误的数据。

4

1 回答 1

0

也许您还需要将 INNER JOIN 限制在members_groups以下行中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
于 2011-08-13T21:38:00.120 回答