14

2 つの異なるテーブルに 2 つの個別のクエリがあり、それらを 1 つのクエリに結合しようとしています。両方のテーブルが同じスキーマ内にあります。

フォーラムの最新の投稿のフォーラム ID、スレッド ID、件名を返すクエリを作成しようとしています。以下に記述した 2 つのクエリを使用できますが、効率のために、可能であれば 1 つだけを使用することをお勧めします。

以下は私の質問です:

1>
SELECT forumid,threadid
FROM threadtable
WHERE modifieddate = (select max(modifieddate) from threadtable);

2>
SELECT subject
FROM messsagetable
WHERE modifieddate = (select max(modifieddate) from messsagetable);

私はいくつかの解決策を試しましたが、ぐるぐる回っているようです。任意の提案をいただければ幸いです。バージョンは Postgres 8.1 です。

4

2 に答える 2

22
SELECT * FROM 
   (SELECT forumid,threadid
    FROM threadtable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM threadtable)) a, 
   (SELECT subject
    FROM messsagetable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM messsagetable)) b

最初のすべての結果を 2 番目のすべての結果と組み合わせる

SELECT * FROM 
   (SELECT forumid,threadid, modifieddate
    FROM threadtable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM threadtable)) a
INNER JOIN 
   (SELECT subject, modifieddate
    FROM messsagetable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM messsagetable)) b
ON a.modifieddate = b.modifieddate

最初のすべての結果を、同じ変更日を持つ 2 番目のすべての結果と結合します。

どちらのクエリも 1 つの結果行のみを返すため、最初の候補が必要になる可能性が高くなります。

于 2013-05-20T16:43:38.680 に答える