有4个sql表:
Listings(Amount, GroupKey, Key, MemberKey),
Loans(Amount, GroupKey, Key, ListingKey),
Members(City, GroupKey, Key)
Groups(GroupRank, Key, MemberKey)
现在,如果想要找出也是列表的贷款,并找到贷款表中成员的成员城市和GroupRank。这里,组表包含有关成员所属的grous的信息。 并执行如下所示的选择操作:
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的新手,所以请原谅新手的问题。
答案 0 :(得分:1)
注意:以下只是猜测你的问题是什么。像其他人说的那样,明确你的问题。
你想JOIN
(http://dev.mysql.com/doc/refman/5.1/de/join.html)
那些表。你写的只是另一种形式的连接,这意味着它具有相同的效果。但是你“加入”了一点太多了。为了使事情更清楚,我们发明了一种语法,使事情更清晰,避免出现这种错误。在上面给出的链接中阅读更多相关信息。
你想要实现的目标可以这样做:
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。
答案 1 :(得分:0)
可能问题与连接类型(INNER)有关。试试LEFT JOIN,但马克说得对:你应该清楚你的问题。
答案 2 :(得分:0)
我首先会更改您的查询以使用更现代的连接语法,该语法允许外部连接。这个:
select Listings.Amount, Members.City, Groups.GroupRank
from listings
left join loans on Listings.Key=Loans.ListingKey
left join members on Members.Key=Listings.MemberKey
left join groups on Listings.GroupKey=Groups.Key
and/or Loans.GroupKey=Groups.Key
and/or Members.Key=Groups.MemberKey
您可能需要在最后一次加入时使用标准(可能是“或”不是“和”等)。