Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL联接和选择从与前两个表匹配的第三个表中获取结果?_Sql - Fatal编程技术网

如何使用SQL联接和选择从与前两个表匹配的第三个表中获取结果?

如何使用SQL联接和选择从与前两个表匹配的第三个表中获取结果?,sql,Sql,我在表1和表2中有一个Join语句,它返回城市和州。我还有另一个表3,其中包含名称、城市、州、国家等列。我想从表3中获取其城市和州列与连接结果中的行相匹配的所有行 Select * from 3rdTable where City='' AND State=''; Join的结果是 - City | State - A | B - C | D - E | F 第三个表中只有一行匹配时的结果示例 - C | D 如何做到这一点?确定连接,我们有内部连接、左

我在表1和表2中有一个Join语句,它返回城市和州。我还有另一个表3,其中包含名称、城市、州、国家等列。我想从表3中获取其城市和州列与连接结果中的行相匹配的所有行

Select * from 3rdTable where City='' AND State='';
Join的结果是

 - City | State
 - A    | B
 - C    | D
 - E    | F
第三个表中只有一行匹配时的结果示例

 - C    |  D

如何做到这一点?

确定连接,我们有内部连接、左侧连接、右侧连接和外部连接;也许了解差异可以帮助你回答问题。
而且代码也不清楚:

您可以使用联接表作为第三个表中的子表来创建where子句,如下所示

select * 
from 3rdTable 
where City+'|'+State= (select a.City+'|'+b.State 
                       from a 
                       inner join b 
                         on a.x=b.y)

如果要连接字段,可以创建一个与联接子查询相等的等式,只需在第三个表中联接即可

如果我们假设表1中既有城市也有州

SELECT A.City, A.State
FROM Table1 A
INNER JOIN table2 B
 on A.PK = B.A_FK
INNER JOIN table3 C
  on A.City = C.City
 and A.State = C.State
这是内部联接的本质:包括联接数据匹配的所有表中的所有行


如果使用左、右、全外部联接,则可以从一个表中获取所有记录,而只获取其他表中匹配的记录,或者从所有表中获取所有记录,这些记录在匹配的位置对齐。

我认为这可以帮助您:

SELECT T3.* 
FROM
table_1_2_join T12 /* replace this placeholder table with the select statement that joins your 2 tables */
JOIN table_3 T3 ON T3.City = T12.city AND T3.state = T12.state

如果您需要更多详细信息,请告诉我。

您可以分享您的代码吗?现在还不清楚我已经编辑了这个问题,希望它现在清楚了…它在将=改为从第三张表中选择*后起作用,其中城市+“|”+State=从a.x=b.yOk上的内部连接b中选择a.City+“|”+b.State,我希望我的回答是朝着正确方向迈出的一步,现在问题解决了,对吗?这不是答案,而是建议或评论。它在那里的位置更好
SELECT * 
FROM   table3 t3 
       INNER JOIN (SELECT city, 
                          state 
                   FROM   table1 T1 
                          JOIN table2 t2 
                            ON t1.id = t2.id) a1 
               ON t3.city = a1.city 
                  AND t3.state = a1.state