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