- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELECT文の二段重ね)
一つのSQLite3のselect文で複数テーブルのデータを取得する方法
このQ&Aのポイント
- SELECT文の二段重ねを使用して、複数テーブルのデータを取得する方法を説明します。
- SQLite3のSELECT文を使用して、複数テーブルのデータを一つのクエリで結合する方法について見ていきます。
- SQLite3を使用して複数のテーブルからデータを取得する際には、SELECT文の二段重ねを利用することで効率的に結果を得ることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>select japanese from table2 where id = (select id from table1 where english = 'foo'); englishがユニークでない場合 select id from table1 where english = 'foo' で得たidは1つとは限りません。 上記で2つ以上のidが返ってきたときid=・・・は文法的にエラーになります。 どうしてもサブクエリでやりたいならinをつかうことになるでしょう (SQLiteに該当する文法があるなら) select japanese from table2 where id in (select id from table1 where english = 'foo'); #1さんのSQL文で問題ありませんが、 ロジック的には絞ったtable1からtable2の値を得たいので select japanese from table1 inner join table2 on table1.id = table2.id and english = 'foo'; の方が、より直観的かもしれませんね。 ちなみにMySQLでテストする限り適切なインデックスさえ貼ってあれば、 効率は変わらないみたいです。
その他の回答 (1)
- hatena1989
- ベストアンサー率87% (378/433)
回答No.1
サブクエリを使うその方法でもいいですが、 一般的には結合(join)を使うし、その方が高速な場合が多いと思います。 select japanese from table1 inner join table2 on table1.id = table2.id where english = 'foo';
お礼
みなさん、返答有り難うございます よく分かりました 現在、データ登録中(もう、三回失敗していますが...)です。成功したら試してみます。 今後もおねがいします