SQL Server 多个表上的SQL多连接

vqlkdk9b  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(119)

我正在努力编写一个查询来连接表以获得所需的结果基本上我有4个表
(一)
| 识别号|日期|
| - ------|- ------|
| 一百二十三|小行星2020|
| 一百二十三|小行星2021|
| 四百五十六|小行星2022|
| 四百五十六|小行星2021|
(二)
| 身份证|全日期|身份2|年份|
| - ------|- ------|- ------|- ------|
| 一百二十三|小行星10|某某|小行星2020|
| 一百二十三|小行星10|某某|小行星2021|
| 四百五十六|小行星10|美国广播公司|小行星2021|
| 四百五十六|小行星102022|美国广播公司|小行星2022|
3)
| id3|全日期|身份2|年份|
| - ------|- ------|- ------|- ------|
| 第12周|小行星10|某某|小行星2020|
| 第12周|小行星10|某某|小行星2021|
| a12|小行星10|美国广播公司|小行星2021|
| a12|小行星102022|美国广播公司|小行星2022|
四)
| id4|全日期|id3|年份|
| - ------|- ------|- ------|- ------|
| 小行星1990|小行星10|第12周|小行星2020|
| 小行星1990|小行星10|第12周|小行星2021|
| 小行星2060|小行星10|a12|小行星2021|
| 小行星2060|小行星102022|a12|小行星2022|
我想获得ID和ID4作为日期2021的结果,因此我想获得:
| 识别号|ID4|
| - ------|- ------|
| 一百二十三|小行星1990|
| 四百五十六|小行星2060|
我的疑问:

Select a.ID, d.ID4
from table1 as a
left join table2 as b on a.id = b.id and a.date = b.year
inner join table3 as c on b.id2 = c.id2  and b.fulldate = c.fulldate
inner join table4 as d on c.id3 = d.id3 and c.fulldate = d.fulldate
where b.year = '2021'
oaxa6hgo

oaxa6hgo1#

我将您的LEFT JOIN更改为INNER JOIN,但这不会影响您的结果。您提供的代码与所需输出匹配,因此请仔细检查您的数据库表结构和查询,以确保它与您提供的内容匹配。

SQL语言

SELECT 
  a.ID, 
  d.ID4 
FROM 
  table1 a 
  INNER JOIN table2 b ON a.id = b.id 
  AND a.date = b.year 
  INNER JOIN table3 c ON b.id2 = c.id2 
  AND b.fulldate = c.fulldate 
  INNER JOIN table4 d ON c.id3 = d.id3 
  AND c.fulldate = d.fulldate 
WHERE 
  b.year = '2021'

结果

|  ID |  ID4 |
|-----|------|
| 123 | 1990 |
| 456 | 2060 |

相关问题