4

jobsさまざまな情報で名前が付けられたテーブルがあります。各ジョブにはジョブ番号 (一意の ID) が与えられます。

purchaseOrders次に、jobID の FK と poID の PK を持つという名前の別のテーブルがあります。

注文書エントリが編集されると、古い情報が保存されます... つまり、新しい PO エントリ (新しい一意の ID) を作成します。

私がやろうとしているのは、「jobs」のすべてのフィールドと「purchaseOrders」のすべてのフィールドを選択する 1 つのクエリを作成することですが、その job の最新の poID のみを選択することです。

例えば:

jobID      Name      State            poID      time      jobID
==========================            ==========================
1          foo       fl               1         1:00      1
2          bar       ga               2         1:10      1
3          zzz       ny               3         1:20      1
                                      4         2:00      2
                                      5         2:01      2
                                      6         2:30      2
                                      7         3:00      3
                                      8         3:40      3
                                      9         3:15      3

両方のテーブルからすべての列を選択するが、特定の jobID の最も高い poID を持つ情報のみを含むクエリを実行するにはどうすればよいですか?

4

1 に答える 1

4
SELECT  a.*, c.*
FROM    jobs a
        INNER JOIN
        (
            SELECT jobID, MAX(time) maxVal
            FROM purchaseOrders
            GROUP BY jobID
        ) b ON a.jobID = b.jobID
        INNER JOIN purchaseOrders c
            ON c.jobID = b.JobID AND
                c.time = b.maxVal
于 2012-12-19T01:24:28.930 に答える