私のMySQLデータベースには、部分的に次のようなテーブルがあります。
+----+-------+-------+
| id | owner | onwed |
+----+-------+-------+
| 1 | A | B |
| 2 | B | A |
| 3 | C | D |
| 4 | D | C |
| 5 | E | X |
+----+-------+-------+
ここでの重要な機能は、すべてのエントリがペアになっているため、それぞれの「所有者」が関連するレコードによって「所有」されることです。A は B を「所有」し、B も A を「所有」します。D は C を「所有」し、C も D を「所有」します。
しかし、5 行目に問題があります。E は X を「所有」していますが、E を「所有」している X のエントリはありません。
何千ものレコードがあるこのテーブルを調べて、孤立したレコードがある行 5 のようなすべてのインスタンスを見つける必要があります。「所有者」フィールドと「所有」フィールドが一致する反対のフィールドと相関関係がない場合。また、私の例のように、ペアになった行が互いに続くという保証はありません。
この問題は、MySQL の能力をはるかに超えています。探している値が何であるかがわかっている場合、検索の方法を知っています。しかし、各行を 1 つずつ調べて値を取り出し、それらの値を使用して別の検索を行う方法がわかりません。誰かが私を助けてくれることを願っています。私はこの問題について無知であり、提案するコードがないことをお詫びします。
これは、問題が疑われる理由がある場合にのみ実行するチェックであるため、効率についてはそれほど心配していません。また、それが役立つ場合は、PHP スクリプトから MySQL データベースを管理しているので、タスクをより管理しやすくするために利用できる PHP コードがあれば、それも利用できます。