0

製品のテーブルがあります。
その表から情報を入手したら、その記事のETAも入手したいと思います。そうするために、私はこの記事にある最新の購入注文行を取得し、次にこの購入の予想される配達を取得することを計画しています。

これは3つの異なるテーブルであり、クエリの別の列のようにしたいと思います。同じテーブルにある場合と同じように、列から値を取得できます。

私の考えは可能ですか?この記事に発注書がない場合は、値をnullにします。

製品

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
4

2 に答える 2

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
于 2010-10-25T17:28:15.630 に答える
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の場合はそうだと思います。

于 2010-10-25T19:15:19.683 に答える