0

誰でもこのクエリで私を助けることができますか? 3 つのテーブルがあります (A;B;C)

A <--1....N---> B  <--1....N--->  C

C.dates (最大) を持つすべての A 行が必要です

4

1 に答える 1

0
SELECT A.*, MAX(C.dates)
FROM A
JOIN B ON B.A_fk = A.id
JOIN C ON C.B_fk = B.id
GROUP BY A.id

この JOIN は、LEFT 結合を持たない結果を除外します。つまり、A の行に B 行がない場合、または B の行に C 行がない場合、その行は表示されません。これを克服するには、JOIN の代わりに LEFT JOIN を使用できます。

SELECT A.*, MAX(C.dates)
FROM A
LEFT JOIN B ON B.A_fk = A.id
LEFT JOIN C ON C.B_fk = B.id
GROUP BY A.id

編集: C.data の最大値が必要であることに気づかなかったのは残念です。そこにあります。SELECT および GROUP BY A.id で MAX 関数を使用する必要があります。

于 2012-04-21T08:28:39.967 に答える