両親が私の両親と同じ学校のクラスにいたすべての子供たちを知りたいとしましょう。私はこのようにクエリを書くことができます:
SELECT child.* FROM child
JOIN parent ON child.ParentID = parent.ID
WHERE parent.class IN (SELECT parent1.class
FROM parent1 JOIN child1
ON parent1.id = child1.parentID
WHERE child1.ID = MyID)
同じ結合を(ほぼ)2回書いているので、どういうわけかこれは間違っているように感じますが、それを改善する方法を見つけることができません(サブクエリをネストする他の方法を見つけることはできますが、どれもそれらのうち、すっきりしているようです)。
私が見逃しているこれを行うためのクリーンな方法はありますか?それとも私はこれを正しくやっていますか?
編集: GolzeTrolがこの質問に対する彼の(完全な)回答で指摘しているように、子供が1人の親しか持たないように制限されるのは奇妙なことです。彼は正確に正しいので、実際の家族に対してこのクエリを実行するつもりはありませんでしたが、他のいくつかのテーブルでは、各子が実際には1人の親にのみ関連付けられています。