如何在多个表上执行简单连接?

时间:2011-10-27 18:14:37

标签: mysql sql join

我确信这里有一个很好的补救问题,但我不能为我的生活让这个简单的联接起作用。

基本上,我有3张桌子:

  • MEMBERS(first_name,last_name),
  • MEMBER_TO_GROUP(member_id,GROUP_ID)
  • 付款(member_id,date,amount)。

我希望从特定群组的成员中获取所有款项。通过仅使用其中两个表,我可以找到特定组的所有付款,没有成员信息,或者我可以找到没有付款信息的所有成员信息。但是,当我尝试添加第三个表时,会返回错误数据(例如,我的成员不在该组中)。这是我正在使用的基本查询:

SELECT
    p.*,
    m.first_name,
    m.last_name
FROM
    members m,
    payments p,
    member_to_group mg
WHERE
    mg.group_id = 12
    AND mg.member_id = p.member_id
    AND m.member_id = p.member_id

我不确定断开连接的位置,但是非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我认为这应该得到你想要的东西:

SELECT p.*,
       m.first_name,
       m.last_name
FROM payments p
INNER JOIN members m
  ON m.member_id = p.member_id
INNER JOIN member_to_group mg
  ON mg.member_id = m.member_id
WHERE mg.group_id = 12