書きかけなところがありますが、年末アウトプットということで公開にしておきます。
全体の思惑
- サブクエリの理解は必須
- 相関サブクエリはパフォーマンスは遅いものの、かなりの対応幅を効かせることができる
- 集合としてとらえる。SQLを考えるときは集合論。
- not exist最強説
where句は1行のレコードを引っ張るための条件
havingやgroup by とごちゃごちゃになりがちだが、whereはあくまで1行を洗濯するための条件。 そのため比較する対象はレコードの1行を比較対象とする。
1-9
「全ての行の座席の状態が「空」であること」 は、SQLで表現するのであれば
「条件Pを満たさない行が存在しない」 と二重否定文に同値変形することで実現させる。
not EXISTと、 サブクエリのselectを使用する。
考え方は、引っ張ってくる行があるか?ないか?で考える。 1行でも引っ張ってくる(条件にマッチする)ものがあれば、NOT EXISTはtrueにならない。