[英]Pervasive Sql 10 Join one table, onto another, onto another
我有一張桌子,上面放着產品。
當我從該表中獲取信息時,我也想獲取該文章的ETA。 為此,我計划獲取本文上最新的采購訂單行,然后獲得此采購的預期交貨時間。
這是三個不同的表,我希望它像查詢中的另一列一樣,因此我可以像從同一列中那樣從該列中獲取值。
我的想法可行嗎? 如果本文沒有購買單,我希望該值為空。
產品展示
Int ProductId
Int Price
樣本數據
ProductId Price
-----------------
1 100
2 300
列
Int RowId
Int ProductId
Int POId
樣本數據
RowId ProductId POId
-----------------------
1 1 1
PO
Int POId
DateTime ETA
樣本數據
POId ETA
-----------------------
1 2010-10-25 10:05
所以我想要的結果是:
ProductId Price ETA (null if no rows exist)
------------------------------------------------
1 100 2010-10-25 10:05
2 300 NULL
我不了解Pervasive,但是在SQL標准中,您可以將最新PO的選擇作為別名子查詢
select Products.id, products.name, ProductETAS.ETA
from Products
left join
(
select POLINES.productid, min(PO.ETA) as ETA from PO inner join POLINES
on PO.id = POLINES.POid and POLINES.productid = ?
where PO.ETA >= today
group by POLINES.productid
) as ProductETAS
on Products.productid = ProductETAS.productid
使用:
SELECT p.productid,
p.price,
x.max_eta
FROM PRODUCTS p
LEFT JOIN POROWS r ON r.productid = p.productid
LEFT JOIN (SELECT po.id,
MAX(po.eta) AS max_eta
FROM PO po
GROUP BY po.id) x ON x.poid = r.poid
我了解的唯一的數據庫是Pervasive,它不允許您省略INNER和OUTER關鍵字。 v10可能已經放松了,但是我知道v8和2000就是這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.