1

2つのテーブルがCHECKINSありTRIPSます。

これらの2つのテーブルのエントリを、最新の日付を先頭にして並べ替える必要があります。

通常、私は単にJOINを使用し、ユーザーのORDERBY日付列よりも使用します。

しかし、ここに課題があります。CHECKINSには1つの日付列がVenueCreatedAtあり、TRIPSには2 つの日付列がTripDateStartedありTripDateEndedます。

あなたが私がそれに対処するのを手伝ってくれるなら、私は大いに感謝します。テストアドレス:

http://sqlfiddle.com/#!2/7f6055/33

4

1 に答える 1

3

どうですか:

SELECT * FROM TRIPS LEFT JOIN CHECKINS 
USING (MemberID) ORDER BY CheckInDateEntered ASC;

( http://sqlfiddle.com/#!2/7f6055/3 )

複数のフィールドをコンマで区切って、優先度順に並べることもできます。

SELECT * FROM TRIPS LEFT JOIN CHECKINS USING (MemberID) 
ORDER BY VenueCreatedAt,TripDateStarted,TripDateEnded ASC;

( http://sqlfiddle.com/#!2/7f6055/10 )

それでもうまくいかない場合は、LEAST関数を確認してください。

SELECT * FROM TRIPS LEFT JOIN CHECKINS USING (MemberID) 
ORDER BY LEAST(VenueCreatedAt,TripDateStarted,TripDateEnded) ASC;

( http://sqlfiddle.com/#!2/7f6055/15 )

ただし、これは最も古い日付の 1 つの列でのみ並べ替えられることに注意してください。各行 (交互の列) の最小値で並べ替えたい場合は、次の 3 つの他の質問のいずれかが役立つ場合があります。

3 つの異なる列の最大値で並べ替える

PHP/MySQL を使用して複数の列から最小値を選択する

ORDER BY または PHP ソート関数を使用した MySQL クエリのソート

(それらはすべて、特定の列セットの各行の最小値または最大値による並べ替えに関するものです)

于 2013-03-12T17:55:42.917 に答える