无法连接三个表并仅返回一个表中的所有记录

巴里利亚霍

我通常使用SQL Server Express 2012和SS Management Studio和数据库,但对它们来说是新手。尽管花费了大量时间和精力,但使用特定的存储过程无法完全实现我的目标,并且在没有任何建议的情况下无法继续前进。

我想从三个相关的表A,B和C中检索数据。我想拥有TableA的所有行,而只有TableB和TableC的相关行(如果存在)。

在StackOverflow上找到了该链接该链接与我的问题最接近,我尝试过但未成功。代码段如下:

SELECT A.*
FROM
  (TableA A LEFT JOIN TableB B ON A.id = B.a_id)
  LEFT JOIN TableC C ON A.id = C.a_ID 

现在,此代码具有与TableA(A.id)相关的TableB(B.a_id)和TableC(C.a_id)的相关“ ID”字段。

在我的情况下,TableA与TableB有关,而TableC与TableB有关。我要返回的是TableA的所有记录,而对于每个TableA记录,仅返回其他两个表中的几个“描述性”字段。我返回的记录超出了我的要求,因此如何将输出过滤为仅TableA中的记录?

谁能建议我该怎么做才能解决这个问题。

重要编辑

对不起,每个人-只是为了阅读您的出色回答来澄清一下。

我只想返回TableA中的所有行。我包括TableB和TableC只是为了为这些行中的每一行返回适当的列。

进一步的信息编辑

简单来说,我的情况与此类似:

TableA是员工表。它具有两列:EmployeeID,EmployeeName

TableB是一个部门表。它具有三列DeptID,DeptName,EmployeeID

TableC是公司表。它具有三列FirmID,FirmName,DeptID

我希望将所有雇员的列表(即TableA中的所有行)放入用户可以从中选择的列表框(在Excel VBA中)。在列表框中,我想向用户显示来自TableB和TableC的各个列:

EmployeeID,EmployeeName,FirmName,DeptName

我正在寻找实现这一目标的逻辑和查询代码

古法

联接表时,不会从不同行中的不同表中获取记录,而是将所有表中的数据提取到同一结果行中。

只需在表中包括所需的字段即可SELECT

SELECT
  A.*,
  B.Something,
  C.Something
FROM
  TableA A
  LEFT JOIN TableB B ON A.id = B.a_id
  LEFT JOIN TableC C ON A.id = C.a_ID

请注意,您将始终获得TableBTableC的值,即结果始终为相同数量的列。如果没有来自TableB或的相应记录TableC,结果中的该字段将为null

(另请注意;对于实际的应用程序代码*,在中使用SELECT并不是一种好习惯。您应该在最终代码的A表中指定所需的字段。)

编辑:

如果您有一个以上的记录TableB或其中TableC的每个记录TableA,并且仍然只希望结果中有一个记录,则必须决定要处理来自TableB的多个值TableC

要处理,你会从数值组TableA从和使用上聚集的价值观TableBTableC例如得到的总和Count从字段TableA和的平均值Price从字段TableB

SELECT
  A.Id,
  A.Name,
  SUM(B.Count) TotalCount,
  AVG(C.Price) AveragePrice
FROM
  TableA A
  LEFT JOIN TableB B ON A.id = B.a_id
  LEFT JOIN TableC C ON A.id = C.a_ID
GROUP BY
  A.Id,
  A.Name

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过映射第三个表查询联接两个表,而无需从Oracle中的第三个表返回所有记录

来自分类Dev

是否可以将一个表中的所有字段与另一个表匹配到第三个表?

来自分类Dev

Laravel 显示三个有关系的表,一个表连接另外两个表

来自分类Dev

选择分钟 具有JOIN的另一个表中记录的三个值

来自分类Dev

SQL连接三个表;表1中的所有实例具有相同字段值的表1中的返回值

来自分类Dev

SQLAlchemy连接-返回一个表的所有列

来自分类Dev

连接表,但确保返回第一个表中的所有行

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

mysql查询加入,比较两个表并返回第一个表中的所有记录

来自分类Dev

通过加入不在另一个表中的三个表来获取记录

来自分类Dev

如何在更新 MySQL 中的第三个表时将多个记录从一个表插入另一个表

来自分类Dev

根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

来自分类Dev

连接三个表并将最后一个表行显示为列

来自分类Dev

mysql查询计算连接三个表的行数并计算一个表的行数

来自分类Dev

如何将一个sqlite表中的三个领域记录连接起来,并将其插入第二个表的一个领域中?

来自分类Dev

连接 3 个表时获取所有第一个表记录的问题

来自分类Dev

从一个表中选择所有记录并从另一个表中匹配记录

来自分类Dev

MySQL连接表仅返回一个匹配项

来自分类Dev

SQL:一个表中的所有记录,以及另一表中的所有记录,包括null

来自分类Dev

如何从具有以下关系的三个表中选择所有记录

来自分类Dev

SQL LEFT JOIN用于连接三个表,但一个用于排除内容

来自分类Dev

MySQL三个表链左连接,按最后一个表过滤

来自分类Dev

一个表与三个表中的许多空值

来自分类Dev

一个表与三个表中的许多空值

来自分类Dev

连接两个表并返回出现在两个表中的所有记录

来自分类Dev

如何从另一个表中的列日期之间获取一个表中的所有记录

来自分类Dev

SQLite:从另一个表中指定的表中删除所有记录

来自分类Dev

SQLite:从另一个表中指定的表中删除所有记录

Related 相关文章

  1. 1

    通过映射第三个表查询联接两个表,而无需从Oracle中的第三个表返回所有记录

  2. 2

    是否可以将一个表中的所有字段与另一个表匹配到第三个表?

  3. 3

    Laravel 显示三个有关系的表,一个表连接另外两个表

  4. 4

    选择分钟 具有JOIN的另一个表中记录的三个值

  5. 5

    SQL连接三个表;表1中的所有实例具有相同字段值的表1中的返回值

  6. 6

    SQLAlchemy连接-返回一个表的所有列

  7. 7

    连接表,但确保返回第一个表中的所有行

  8. 8

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  9. 9

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  10. 10

    mysql查询加入,比较两个表并返回第一个表中的所有记录

  11. 11

    通过加入不在另一个表中的三个表来获取记录

  12. 12

    如何在更新 MySQL 中的第三个表时将多个记录从一个表插入另一个表

  13. 13

    根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

  14. 14

    连接三个表并将最后一个表行显示为列

  15. 15

    mysql查询计算连接三个表的行数并计算一个表的行数

  16. 16

    如何将一个sqlite表中的三个领域记录连接起来,并将其插入第二个表的一个领域中?

  17. 17

    连接 3 个表时获取所有第一个表记录的问题

  18. 18

    从一个表中选择所有记录并从另一个表中匹配记录

  19. 19

    MySQL连接表仅返回一个匹配项

  20. 20

    SQL:一个表中的所有记录,以及另一表中的所有记录,包括null

  21. 21

    如何从具有以下关系的三个表中选择所有记录

  22. 22

    SQL LEFT JOIN用于连接三个表,但一个用于排除内容

  23. 23

    MySQL三个表链左连接,按最后一个表过滤

  24. 24

    一个表与三个表中的许多空值

  25. 25

    一个表与三个表中的许多空值

  26. 26

    连接两个表并返回出现在两个表中的所有记录

  27. 27

    如何从另一个表中的列日期之间获取一个表中的所有记录

  28. 28

    SQLite:从另一个表中指定的表中删除所有记录

  29. 29

    SQLite:从另一个表中指定的表中删除所有记录

热门标签

归档