我想加入两个表来显示一个结果集。任何帮助将不胜感激
tbl_Orders:
┌─────────┬────────────────┬────────────────┐ │ OrderID │ PublicationID1 │ PublicationID2 │ ├─────────┼────────────────┼────────────────┤ │ 1 │ 1 │ 2 │ │ 2 │ 3 │ 1 │ │ 3 │ 1 │ 3 │ └─────────┴────────────────┴────────────────┘
tbl_Publications:
┌───────┬─────────────────────────┐ │ PubID │ Publication_Name │ ├───────┼─────────────────────────┤ │ 1 │ "Dilevry of .." │ │ 2 │ "Pickup of ..." │ │ 3 │ "Emailing documents.." │ └───────┴─────────────────────────┘
我要找的结果是:
┌──────────┬────────────────────────┬────────────────────────┐ │ OrderID │ PublicationName1 │ PublicationName2 │ ├──────────┼────────────────────────┼────────────────────────┤ │ 1 │ "Dilevry of .." │ "Pickup of ..." │ │ 2 │ "Emailing documents.." │ "Dilevry of .." │ │ 3 │ "Dilevry of .." │ "Emailing documents.." │ └──────────┴────────────────────────┴────────────────────────┘
我试过的查询:
SELECT * FROM
(SELECT Organization_ID, OrganizationName, a.PublicationID2, Publication_Name
FROM tbl_Orders a, tbl_Publications b
WHERE a.PublicationID2= b.PubID) t1
Left JOIN
(SELECT b.PubID, PublicationName AS Publication_Name2
FROM tbl_Orders a, tbl_Publications b
WHERE a.PublicationID2= b.PubID) t2 ON t1.Pub_ID2 = t2.Pub_ID
答案 0 :(得分:1)
您不需要子查询。只需LEFT JOIN
tbl_Publications
两次,一次在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
答案 1 :(得分:1)
您可以像这样使用joins
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
在大多数情况下,您不会使用sub queries
因为他们对系统感到非常沉重 - 所以如果您可以避免它请在没有子查询的情况下工作。
我会把它移到它下面的一个表格中,你可以有多个订单商品。
订单库存将链接到您自己的库存,您还会包含有关价格等的信息,因此进一步的价格变化不会对您产生影响:)
答案 2 :(得分:0)
如果你想要子查询,这也可以。
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