項目の項目が「失われていて、見つかりました」という表があります。各行にはイベントの日付があります。私は、 'itemid'、 'lost date'、 'found date'の組が一致するようにテーブルを結合することを望んでいます。MySQL:日付の組を生成するための自己結合
これは一点に当てはまります:残念ながら、特定のアイテムに複数の失われたペアがある場合、それぞれの「失われた日付」はそれに続くすべての「見つかった日付」と結合されます。
まだ私と一緒ですか?
クエリが行くようなもの:
select c0.ItemId, c0.ChangeDate, c1.ChangeDate from Changes c0
join Changes c1 on
c0.ItemId = c1.ItemId and c1.ChangeDate >= c0.ChangeDate
where c0.ChangeType = 9 (lost) and c1.ChangeType = 10 (found);
いいえ「が見つかった場合はどうImは達成することを望んにのみ、次の順序で「が見つかり日付」(またはNULLとペアに与えられた「失われた日付」のいくつかのフォームではありません
日付 'が存在する)。 Im(かなり)これは可能ですが、私はパスを見ていないことを確認します。
最初の結合にサブ選択を入れて、LIMIT 1を使用して1つのレコードしか取得できないのは不思議でしたが、これを選択のメイン部分の適切な行に結合する方法はわかりません。 MySQLはそれが存在しないと私に伝えます。けっこうだ。
私はこの方が読みやすいと思ったので、一緒に行った。私が変更したのは、 'ChangeType = 10'をジョインに移動してジョイントを片側にして、アイテムがまだ失われているケースを拾うことでした。 – ethrbunny