Pervasive Sql 10将一个表加入另一个表,加入另一个表

时间:2010-10-25 17:14:06

标签: sql join pervasive

我有一张产品表 当我从该表中获取信息时,我也想获得该文章的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

2 个答案:

答案 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就属于这种情况。