mysql - MYSQL 中连接多个表

标签 mysql sql

这是我试图完成的连接类型的示例。 http://sqlfiddle.com/#!2/aab00/3

您可以看到有满足 WHERE 子句但未显示的记录 (Name2, Name3)。此外,显示的 Name1 记录也不准确。

最佳答案

您应该在join之前进行聚合:

SELECT t3.PersonName AS Name,
       COALESCE(t1.NumberOfCars, 0) AS NumberOfCars,
       COALESCE(TMobile, 0) AS TMobileConnections,
       COALESCE(ATT, 0) AS ATTConnections
FROM Table3 t3 LEFT OUTER JOIN
     Table1 t1
     ON t3.PersonSSN = t1.PersonSSN and t1.State = 'FL' LEFT OUTER JOIN
     (select t2.PersonSSN, t2.state,
             max(t2.Carrier = 'T Mobile') as TMobile,
             max(t2.Carrier = 'AT&T') as ATT
      from Table2 t2
      group by t2.PersonSSN, t2.state
     ) t2
     ON t3.PersonSSN = t2.PersonSSN and t2.State = 'FL';

您还可以在子查询中按状态进行过滤,但这适用于该查询。

请注意,我将所有双引号更改为单引号。始终对字符串和日期常量使用单引号——这是标准 SQL。需要时,使用双引号或反引号来引用标识符。

关于mysql - MYSQL 中连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878661/

相关文章:

mysql - 使用 MySQL 查询,如果字段具有特定值,则将其包含在 SELECT 查询中,否则不包含它

php - 如何知道共享主机中哪些查询消耗的 CPU 最多?

mysql - 使用mySQL计算3个表之间的元素数量

sql - 随着时间的推移对重复条目进行不同计数

SQL 服务器 : multiple rows with same column values except one

sql - DB2 返回第一个匹配项

php - MYSQL具体搜索

mysql - 返回所有行,但聚合其中一些行(而不是其他行)

java - Hibernate 使用注释将多表映射到一张表

sql - 在 SQL Server 中将 XML UTF-8 编码的字符串转换为 XML 数据类型