私は最近、SQLクエリに関してここで質問をしました:複雑なSQL削除クエリの頭を包む問題
私がやろうとしていることは複雑すぎて、結果を間に保つ方法がなければ、単一のクエリや複数のクエリでさえも実行できないことを理解しました。したがって、bashスクリプトを作成することにしました(最終結果はcronjobと関係があるため、bashが最も簡単な選択です)。
次の表を検討してください。
AssociatedClient:
+-----------+-----------------+
| Client_id | Registration_id |
+-----------+-----------------+
| 2 | 2 |
| 3 | 2 |
| 3 | 4 |
| 4 | 5 |
| 3 | 6 |
| 5 | 6 |
| 3 | 8 |
| 8 | 9 |
| 7 | 10 |
+-----------------------------+
私がしたいのは、特定のに関連付けられたのリストにあるすべてのを選択することです。Registration_id
Client_id
Client_id
Registration_id
私はSQLにかなり慣れていませんが、このクエリは比較的簡単であることがわかりました。
SELECT `Registration_id` FROM `AssociatedClient` ac1
WHERE ac1.`Client_id` IN
(SELECT `Client_id` FROM `AssociatedClient` ac2
WHERE ac2.`Registration_id` = $reg_id);
ここで、$reg_id
は単なるbash変数です。
これは機能しますが、特に多くの文字の乱雑さが発生するbashスクリプト内では見栄えがよいため、自己結合で実行されることを望んでいます。私のSQLスキルはそれほど遠くないのではないかと思います。