2017-03-29 19 views
0

のためのパラメータとして、私は2つのテーブルがあります: - >のitemId - > itemNameに使用クエリ結果別のクエリ

テーブルの請求書 -

テーブル項目を> InvoiceId - > InvoiceNum - > InvoiceDate - > ItemID など(該当なし)。

別個の商品の場合は、最新(最新の唯一のもの)の請求書日付を見つける必要があります。 これまでのところ、最初のテーブルで最初のクエリを作成し、各結果に対して2番目のテーブルで新しいクエリを実行しました。 10000以上のアイテム)。 私はASPの古典とアクセスを使用していますが、私はかなりの問題は、SQLに関連していると確信しています。

私は文節WHERE ... INを試しましたが、最新のものだけでなく、すべての請求書日付が出力されました。

助けが必要ですか? Thxで事前に!

私は非常に一般的なことを理解しています。ここ は、私が使用しようとしていますSQL命令である:

SELECT table1.id、table3.name、table1.name、table2.trans_num、マックス(table2.transaction_date_h)MaxDitransaction_date_h AS、表3 INNER FROM をtable2.amount_amt JOIN(table1 INNER JOIN table2 ON table1.id = table2.item_id)ON table3.id = table1.preferred_vendor_id GROUP BY table1.id、table3.name、table1.name、table2.trans_num、table2.amount_amt ORDER BY table3。名前、table1.name、table2.trans_num、Max(table2.transaction_date_h)DESC;

このクエリを実行すると、結果はレコードセット全体になります。あなたはアイテムが必要な場合は

select itemId, 
    max(InvoiceDate) as InvoiceDate 
from invoices 
group by itemId 

: としては、私はあなただけのアイテムIdを、最新の請求書の日付は、単純な集計を使用したい場合は、それぞれ個別のtable1.id

答えて

1

のためにのみ、最新のtransaction_date_hを取得したい、と述べました詳細は、あまりにも、項目テーブルで上記の参加:

select i.*, i2.InvoiceDate 
from item i 
join (
    select itemId, 
     max(InvoiceDate) as InvoiceDate 
    from invoices 
    group by itemId 
    ) i2 on i.itemId = i2.itemId; 

か:

select i.itemId, 
    i.itemName, 
    max(i2.InvoiceDate) as InvoiceDate 
from item i 
join invoices i2 on i.itemId = i2.itemId 
group by i.itemId, 
    i.itemName; 
関連する問題