I持って、次の表:条件は、フィールドデータを使用して、JOIN
犬:id, name, event_id
犬
イベントを格納するために使用されます。id, title, owner_id
誕生日、ワクチンなどのようなイベントを格納するために使用されます
オーナー:id, name
オーナーを格納するために使用されます。元の所有者は、1
owner_eventのIDを持っている犬小屋です:元の所有者は、他の所有者の「に等しい「ウォークイベント」を検討するかもしれない。すなわち、お互いに様々な所有者のイベントを同一視するのに使用されoriginal_owner_event_id, other_owner_event_id
遊びキャッチ "イベント。
参加すべて:
犬はevent.owner_id = owner.id
はここでトリッキーなPAだdog.event_id = event.id
所有者がイベントに参加しイベントに参加しますRT:owner_id > 1
その後、イベントがowner_event.other_owner_event_id = event.id
owner_eventをそれ以外の場合は参加すると
、イベントはowner_event.original_owner_event_id = event.id
owner_eventに参加します。
SELECT * FROM dog
LEFT JOIN event `event` ON `event`.id = dog.event_id
LEFT JOIN owner `owner` ON `owner`.id = `event`.owner_id
LEFT JOIN owner `owner_event_other` ON `owner_event_other`.other_owner_event_id = `event`.id AND `owner`.id > 1
LEFT JOIN owner `owner_event_original` ON `owner_event_original`.original_owner_event_id = `event`.id AND `owner`.id = 1
WHERE dog.id = 3
私は実際に(例えば)犬3
のために今event.title
を取得するかどうかはわかりません。
は、これまでのところ、私は次のよう持っています。
owner.id
に応じて、event.id
からowner_event.other_owner_event_id
カラムまたはowner_event.original_owner_event_id
カラムになる可能性があることに注意してください。
あなたは 'owner'三回に参加します。私は最後の二つではなくowner_event''読んでくださいと仮定します。 – trincot
ことがありますあなたが望む出力を正確には明らかにしない。その犬の所有者のリストにあるイベントのタイトルを表示するか、元の所有者のイベントのタイトルを常に表示しますか?すべてのテーブルと希望する出力に対して、いくつかのサンプル入力を提供してください。 – trincot