注文とその注文者を並べたい。このSQLへの指摘として正しいものは?
SELECT * FROM orders JOIN users;正答
- JOIN は INNER JOIN と書かないと構文エラーになる
- テーブル名は単数形にしないと JOIN できない
- SELECT * のままでは JOIN の結果を取り出せない
- 結合条件(ON)が無いので、全組み合わせ(直積)が返る
解説
JOIN は ON で「どの行とどの行を対応させるか」を書かないと、orders の各行に users の全行がつながる直積になる。SQLite ではエラーにならず、行数が掛け算で増えるので気づきにくい。ON orders.user_id = users.id のような条件が要る。JOIN は INNER JOIN の省略形なので 1 番目は誤り。テーブル名の単複は好みの問題で動作に関係しない。
参考: www.sqlite.org
この問題を含む 指摘・レビュー のテストを制限時間つきで解く
指摘・レビュークイズへ