This question was migrated来自数据库管理员堆栈交换,因为它可以在堆栈溢出时得到响应。
8年前。
我有一个我确信是相当补救性的问题,但我不能为我的生活得到这个简单的加入工作。
基本上,我有三张桌子:
成员(名字,姓氏),
成员到组(成员id,组id)
付款(会员身份、日期、金额)。
我想从一个特定组的成员那里获得所有付款。通过仅使用其中两个表,我可以在没有成员信息的情况下查找特定组的所有付款,也可以在没有付款信息的情况下查找所有成员信息。但是,当我试图添加第三个表时,会返回错误的数据(例如,我得到的成员不在组中)。这是我使用的基本查询:
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

我不知道断开的地方在哪里,但任何帮助将是最感激的。

最佳答案

我想这应该是你想要的:

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

10-08 16:30