私は今、答えがないと考えているMySQLの問題の真のマインドベンダーを持っています. 私を助けてください、あなたは私の唯一の希望です!
基本に落とし込むと、「People」と「Activity」という 2 つのテーブルがあります。これらの 2 つのテーブルが 2 つの異なる関係テーブルによって結合される可能性があります (長い話と多くのデータが関係します): people_activity と entity_activity両方の関係テーブルで。
これは私が持っているものですが、多くのデータでは非常に遅くなります:
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join entityactivity on entityactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid OR
entityactivity.entityid = people.peopleid)
いくつかの注意事項 - 2 つの関係テーブルの結果を結合するビューを作成し、代わりにこのビューを介して人とアクティビティを結合しようとしました。これも機能しますが、それでも非常に遅いです
1 つのテーブルに統合するためにリレーションシップがどのように機能するかを変更することは、大きな頭痛の種です
私はユニオンも試しました-このように-
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid)
union
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (entityactivity.entityid= people.peopleid)
これも機能しますが、他の理由で問題が発生します。基になるものをあまり変更せずに、1 つのクエリでこれを行う必要があります。
私が見逃した素晴らしいアイデアを持っている人はいますか??!