有4个sql表:
Listings(Amount, GroupKey, Key, MemberKey),
Loans(Amount, GroupKey, Key, ListingKey),
Members(City, GroupKey, Key)
Groups(GroupRank, Key, MemberKey)
现在,如果您想找出也在列表中的贷款,并在贷款表中找到成员所在的城市和成员的 GroupRank。这里,组表包含有关成员所属组的信息。 并执行如下所示的选择操作:
select Listings.Amount, Members.City, Groups.GroupRank
from listings, loans, members, groups
where Listings.Key=Loans.ListingKey and
Members.Key=Listings.MemberKey and
Listings.GroupKey=Groups.Key
上面的连接给出了错误的结果,请指出我哪里出错了。 另外,我是 SQL 新手,所以请原谅新手问题。
最佳答案
注意:以下内容只是猜测您的问题所在。就像其他人说的,澄清你的问题。
您想要加入
(http://dev.mysql.com/doc/refman/5.1/de/join.html)
那些 table 。您编写的内容只是联接的另一种形式,这意味着它具有相同的效果。但你“加入”得有点太多了。为了使事情更清晰,我们发明了一种语法来使事情更清晰并避免此类错误。在上面给出的链接中阅读更多相关信息。
你想要实现的目标可以这样完成:
SELECT
Listings.Amount, Members.City, Groups.GroupRank
FROM
Listings
INNER JOIN Groups ON Listings.GroupKey=Groups.Key
INNER JOIN Members ON Members.Key=Listings.MemberKey
您不对 Loans 表执行 SELECT,因此在此查询中不需要它。
这是 INNER JOIN,它会给您一个结果,表 A 中的每一行在表 B 中都有一个相应的条目。如果不是这种情况,您必须使用 LEFT 或 RIGHT JOIN。
关于mysql - 连接返回错误结果的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9633366/