我有一张产品表 当我从该表中获取信息时,我也想获得该文章的ETA。为此,我计划在本文中获取最新的订单行,然后获得此次购买的预期交付。
这是三个不同的表,我希望它像查询中的另一个列,所以我可以从列中获取值,如果它在同一个表上。
我的想法可能吗?如果本文没有采购订单,我希望该值为空。
产品
Int ProductId
Int Price
示例数据
ProductId Price
-----------------
1 100
2 300
PORows
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
答案 0 :(得分:0)
我不知道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
答案 1 :(得分:0)
使用:
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就属于这种情况。