マシンのテーブルと、これらのマシンが時間の経過とともに到達可能かどうかを表すテーブルがあります。
machines
id name
1 machine1
2 machine2
3 machine3
4 machine4
machines_reachability
machine_id is_reachable time
1 0 (whatever)
2 1 (whatever)
3 0 (whatever)
1 1 (whatever)
2 0 (whatever)
3 0 (whatever)
1 1 (whatever)
2 1 (whatever)
3 1 (whatever)
JOINS を使用して、到達可能性レコードがないマシン (つまり machine4)を見つけようとしています。これは別の方法で行うこともできますが、理解を深めるために結合を使用して行う必要があります。
私は次のことを試しました
SELECT * FROM machines m LEFT OUTER JOIN machines_reachability mr ON m.id = mr.machine_id
これにより、左側のテーブルの内容全体 (つまり、マシン) が出力され、OUTER
キーワードは条件に基づいてとテーブルの間の結果の交差を除外する必要があることを理解しています。しかし、それは私が期待したようには機能しませんでした。すべての内容が表示されましたが、一致しなかった行は除外されませんでした。machines
machines_reachability
m.id = mr.machine_id
では、結合しなかった行が左側のテーブルであるか右側のテーブルであるかを選択JOIN
して実際に表示するクエリを実行するにはどうすればよいでしょうか。