2016-05-13 11 views
0

私は2つの列を持つテーブルを持っています。これまですべてを正しく実行し、接続されたエントリが正しく接続されているかどうかをチェックしたいと思います。テーブルは次のようになります。テーブル内の接続された行が実際に接続されているかどうかのテスト

ID | (...) | partnerID 
====================== 
1 | (...) |  5 
2 | (...) |  3 
3 | (...) |  2 
4 | (...) |  7 
5 | (...) |  1 
6 | (...) | null 
7 | (...) |  4 
8 | (...) | null 

接続がすべてあるかどうかを確認する方法はありますか? "for all partnerIDs check if their partnerIDs are this ID"のようなもの?

私のSQLiteに関する知識は本当に基本的なものなので、私は正確にGoogleに何があるのか​​は分かりません。あなたの何人かが私を助けることができれば素晴らしいだろう。

単に「いいえ」は同様に素晴らしいだろうことができない場合には、各行のためのパートナーを見つけるために)

答えて

1

自体でテーブルを結合:

SELECT p1.ID, 
     p2.ID 
FROM MyTable AS p1 
JOIN MyTable AS p2 ON p1.partnerID = p2.ID; 

相手を見つけるにはパートナー、他の参加追加します。

SELECT p1.ID, 
     p2.ID, 
     p3.ID 
FROM MyTable AS p1 
JOIN MyTable AS p2 ON p1.partnerID = p2.ID 
JOIN MyTable AS p3 ON p2.partnerID = p3.ID; 

あなたが今p1p3一致するかどうかを確認することができます

SELECT p1.*, 
     p2.* 
FROM MyTable AS p1 
JOIN MyTable AS p2 ON p1.partnerID = p2.ID 
JOIN MyTable AS p3 ON p2.partnerID = p3.ID 
WHERE p1.ID != p3.ID; 

これらの結合はすべてNULLを含む行を無視します(マッチなし)。 一方向がNULLの間違ったパートナーシップをキャッチするには、2番目の結合を外部結合にします。

関連する問題