Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 如何创建包含4个表的视图?_Sql_Database_Sql Server 2012 - Fatal编程技术网

Sql 如何创建包含4个表的视图?

Sql 如何创建包含4个表的视图?,sql,database,sql-server-2012,Sql,Database,Sql Server 2012,我有四张桌子 Table 1 ------------- primary key-pk1 Table 2 ------------ primary key-pk2 foreign key-pk1 Table 3 ------------ primary key-pk3 foreign key-UID Table 4 ------------ primary key-pk4 foreign keys-pk1,UID,pk3 Table U ------------ primary

我有四张桌子

Table 1
-------------
primary key-pk1


Table 2
------------
primary key-pk2
foreign key-pk1


Table 3
------------
primary key-pk3
foreign key-UID


Table 4
------------
primary key-pk4
foreign keys-pk1,UID,pk3


Table U
------------
primary key-UID
我想用表1、表2、表3和表4创建一个视图,这样即使表2和表3中没有内容,我也应该得到表1和表4的连接,即匹配内容

表1和表4中总会有内容。表2和表3可能有内容,也可能没有内容


提前感谢:)

尝试使用左连接。应该像这样工作:

SELECT *  
FROM TABLE_1 tb1
JOIN TABLE_4 tb4 ON tb1.pk1 = tb4.pk1
JOIN TABLE_U tbU ON tb4.UID = tbU.UID
LEFT JOIN TABLE_2 tb2 ON tb1.pk1 = tb2.pk1
LEFT JOIN TABLE_3 tb3 ON tb4.UID = tb3.UID

顺便说一句,尝试列出您实际需要的所有字段,而不是使用“SELECT*”,因为它更便于可读性和性能。

尝试使用left join。应该像这样工作:

SELECT *  
FROM TABLE_1 tb1
JOIN TABLE_4 tb4 ON tb1.pk1 = tb4.pk1
JOIN TABLE_U tbU ON tb4.UID = tbU.UID
LEFT JOIN TABLE_2 tb2 ON tb1.pk1 = tb2.pk1
LEFT JOIN TABLE_3 tb3 ON tb4.UID = tb3.UID
顺便说一句,试着列出您实际需要的所有字段,而不是使用“SELECT*”,因为这样更便于可读性和性能。

Use.Use。