1

以下の列を持つ3つのテーブルが与えられます...

テーブル (列)

A (a_pk、b_pk、その他)

B (b_pk、a_pk、c_pk)

C (c_pk、b_pk、日付)

(コメント: pk は主キー、date は日付)

...選択しようとしています...

A.a_pk、A.other、C.date

...次の制限があります。

max(B.b_pk) B.a_pk によるグループ化 (すべての A.a_pk に対して B.b_pk の最大値のみを選択)

A.other = 'something' (単なる WHERE の例)

ORDER BY C.date (最新の日付順)

以下は成功しなかった1つの試みです(他のものはさらに失敗しているように見えました)

SELECT A.a_pk, A.other, C.date
FROM A, C
WHERE   
 A.other = 'something'
 AND
 A.a_pk IN 
  (
  SELECT max(B.b_pk), B.a_pk, B.c_pk, C.date
  FROM B
  INNER JOINT C ON C.b_pk = B.b_pk
  GROUP BY B.a_kp
  )
ORDER BY C.date DESC

それはどのように行われるべきですか?

4

1 に答える 1

0

試す

     Select A.a_pk, A.other, C.date
     From A Left Join (B Join C On C.b_pk = B.b_pk)
         On B.a_pk = A.a_pk
             And B.b_pk = 
                 (Select Max(b_pk)
                  From B
                  Where a_pk = A.a_pk)
     Order By C.Date
于 2012-09-13T12:55:57.683 に答える