mysql - 连接返回错误结果的表

标签 mysql sql sql-server sql-server-2008 sql-server-2005

有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/

相关文章:

PHP 不支持 SQL;空结果

sql - 如何创建通用 SQL Server 存储过程以根据触发器中的插入和删除执行插入到审计表中

mysql - SQL 查询 : join two tables

java - 在表中添加行的问题

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException :

c# - 多个下拉列表更改每个表 C# 和 MySql 查询

mysql - 创建一个计算 SQL 列,用于维护每个客户的运行订单总数

sql - 有没有办法在 SQL Server 中查询 JSON 列而忽略键的大小写?

sql - 获取SqlException,超时错误

mysql - Rails 从连接表中获取值