【发布时间】:2023-03-17 07:08:01
【问题描述】:
我是一个完全的新手,通过在工作中编写和修改一些查询和报告来自学 SQL。 我已经掌握了各种类型的 JOIN,并且我已经使用了几次 INNER JOIN 并取得了不错的成功。
我坚持的应该是一项简单的任务,但我的 Google-Fu 一定很弱。这就是我想要做的。
假设我有 3 个表,Table_A、Table_B 和 Table_C,每个表都有一个名为 [Serial_Number] 的列。
如果 A.Serial_Number = B.Serial_Number OR C.Serial_Number,我要选择其他 3 列。
我已经尝试过:
SELECT
*
FROM
Table_A AS A
INNER JOIN Table_B AS B ON A.Serial_Number = B.Serial_Number
INNER JOIN Table_C AS C ON A.Serial_Number = C.Serial_Number
但这总是产生 0 结果,因为数据的性质表明如果 A 匹配 B,它将永远不会匹配 C,反之亦然。我还尝试了 LEFT OUTER JOIN 作为第二个子句,但这仅包括 Table_C 中已经在 Table_B 上匹配的 NULL。
我所做的与多个表上的 JOIN 相关的所有搜索似乎都是关于使用 JOINS 进一步排除记录,而我实际上希望在其中包含更多记录。
就像我说的,我确信这真的很简单,只需要朝着正确的方向轻推。
谢谢!
【问题讨论】:
-
嗯,可能是tabular format 中的一个简单示例,您的预期结果将有助于澄清这个问题。
-
连接是水平的。因此,如果同时在 A=B 和 AC 上进行连接,则外连接将给出空值,而内连接将为空。所以请举例说明一些输入数据和输出应该是什么样子。