Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 将两个select语句连接到一个表中_Sql_Left Join_Inner Join - Fatal编程技术网

Sql 将两个select语句连接到一个表中

Sql 将两个select语句连接到一个表中,sql,left-join,inner-join,Sql,Left Join,Inner Join,我想连接两个表以显示一个结果集。任何帮助都将不胜感激 待定订单: ┌─────────┬────────────────┬────────────────┐ │ OrderID │ PublicationID1 │ PublicationID2 │ ├─────────┼────────────────┼────────────────┤ │ 1 │ 1 │ 2 │ │ 2 │ 3 │

我想连接两个表以显示一个结果集。任何帮助都将不胜感激

待定订单:

┌─────────┬────────────────┬────────────────┐ │ OrderID │ PublicationID1 │ PublicationID2 │ ├─────────┼────────────────┼────────────────┤ │ 1 │ 1 │ 2 │ │ 2 │ 3 │ 1 │ │ 3 │ 1 │ 3 │ └─────────┴────────────────┴────────────────┘
您不需要子查询。只需将
tbl_出版物
左连接两次,一次在
PublicationID1
上,另一次在
PublicationID2
上:

SELECT o.OrderID,
       p1.Publication_Name AS PublicationName1,
       p2.Publication_Name AS PublicationName2
FROM tbl_Orders o
LEFT JOIN tbl_Publications p1 ON o.PublicationID1 = p1.PubID
Left JOIN tbl_Publications p2 ON o.PublicationID2 = p2.PubID

您可以像这样使用
连接

SELECT 
    orderId, 
    b.Publication_Name as PublicationName1 
    c.Publication_Name as PublicationName2 
from tbl_Orders a
LEFT JOIN tbl_Publications b ON a.PublicationID1 = b.PubID
Left JOIN tbl_Publications c ON a.PublicationID2 = c.PubID
在大多数情况下,您不会使用
子查询
,因为它们确实会给系统带来沉重负担-因此,如果您可以避免子查询,请在不使用子查询的情况下工作

我会把它移到它下面的一张桌子上,在那里你可以有多个订单项目


订单库存将是指向您自己库存的链接,您还将包括有关价格等的信息,以便进一步的价格变化不会影响您:)

如果您想要子查询,这也会起作用

SELECT ord.Orderid,
(select Publication_Name 
 from tbl_Publications 
 where pubid=ord.PublicationID1) as publication_name1,
 (select Publication_Name 
 from tbl_Publications 
 where pubid=ord.PublicationID2) as publication_name2
FROM tbl_Orders ord

这就解决了…我需要两个左连接!谢谢。
SELECT o.OrderID,
       p1.Publication_Name AS PublicationName1,
       p2.Publication_Name AS PublicationName2
FROM tbl_Orders o
LEFT JOIN tbl_Publications p1 ON o.PublicationID1 = p1.PubID
Left JOIN tbl_Publications p2 ON o.PublicationID2 = p2.PubID
SELECT 
    orderId, 
    b.Publication_Name as PublicationName1 
    c.Publication_Name as PublicationName2 
from tbl_Orders a
LEFT JOIN tbl_Publications b ON a.PublicationID1 = b.PubID
Left JOIN tbl_Publications c ON a.PublicationID2 = c.PubID
SELECT ord.Orderid,
(select Publication_Name 
 from tbl_Publications 
 where pubid=ord.PublicationID1) as publication_name1,
 (select Publication_Name 
 from tbl_Publications 
 where pubid=ord.PublicationID2) as publication_name2
FROM tbl_Orders ord