OK、私は本当にめちゃくちゃなデータベースを継承し、それをクリーンアップする任務を負っています。
問題はこれです…2つのテーブルを比較する必要があります。table1
(members)およびtable2
(associations)を実行し、関連付けがなくなったメンバーのすべてのインスタンスを検索します。ここで、関連付けはメンバーを指していません。
関連付けテーブルにはtable2
、ご想像のとおり、mbr_id
のメンバーのid
フィールドにリンクするというフィールドがありtable1
ます。
ある種のwhileループが必要になると思いますが、クエリの作成方法がわかりません。何かのようなもの…
SELECT * FROM `members2`, `assocs` WHERE `assocs.mbr_id` != `members2.id`
それですか?できません…そうですか?
それは正しくありえない。次の2つのクエリを試してください。
select m.*
from members m
where not exists (select 1 from assocs a where a.mbr_id = m.id);
そして:
select a.*
from assocs a
where not exists (select 1 from members m where a.mbr_id = m.id);
1つ目は、有効な関連付けがないメンバーです。2つ目は、有効なメンバーがいない関連付けです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加