1

次のテーブル構造を持つ MySQL があります。

table mt_events
id - record id
doc_id - document id
event_id - event id
date - event date
user - user

問題は、次のイベント 4 を持つイベント 3 を持つすべてのドキュメントのレポートが必要なことです。これは、1 つのドキュメントが複数のイベント 3 を持つことができることを除いて、非常に簡単な単純な JOIN のように見えます。イベント4 ...次のように:

1 3a 4a 11 12 8 3b 4b 3c 4c 3 17 5

これまでのところ、次のようになりました。

SELECT ev.date AS Event1, ev.user AS User1, ev2.date AS Event2, ev2.user AS User2
FROM  `mt_events` ev
JOIN mt_events ev2 ON ev2.doc_id = ev.doc_id AND ev2.event = 4 AND ev2.date > ev.date
WHERE ev.event = 3 AND ev.date LIKE '2013-03%'

しかし、それは必要な結果を生み出しません-

3a 4a
3b 4b
3c 4c

そして与えます -

3a 4a 
3a 4b
3b 4b
3a 4c
3b 4c
3c 4c

どんな助けでも大歓迎です...

4

2 に答える 2

2

試す:

SELECT ev.date AS Event1, ev.user AS User1, ev2.date AS Event2, ev2.user AS User2
FROM  `mt_events` ev
JOIN mt_events ev2 ON ev2.doc_id = ev.doc_id AND ev2.event = 4 AND ev2.date =
    (select min(el.date) from `mt_events` el
     where el.doc_id = ev.doc_id AND el.event = 4 AND el.date > ev.date)
WHERE ev.event = 3 AND ev.date LIKE '2013-03%'
于 2013-04-29T10:36:04.917 に答える