簡體   English   中英

普遍的Sql 10將一個表連接到另一個表上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM