- ベストアンサー
SQLの副問い合わせについて
SELECT (副問い合わせ).a, (副問い合わせ).b, (副問い合わせ).c, (副問い合わせ).d FROM TableA ※副問い合わせの抽出条件は同じ このように同じ副問い合わせが複数あるとそれだけ処理が重くなるのでしょうか? どうしたら一つにまとめることができるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
この情報では、出来ることもあれば出来ないこともある。効率が悪いこともあるしそれが最善であることもある。 としか書けないです。答えになってませんよね(苦笑) そうですね。あなたが書いたselect文を全部省略せずに書いてください。テーブル名とフィールド名は適当に変えてもかまいません。でもそれ以外の分は何も変えずに省略せずに書きましょう。 又は、テーブルの定義と、あなたが求める結果を日本語で省略せずに書いてください。この場合は、出来れば、フィールド名・テーブル名も変えて欲しくないですね。最低でも、あなたが求める答えを作るのに必要なテーブル間・フィールド間の関係が解るだけの説明が必要です。 フィールド名やテーブル名がそのまま全部出せるならどちらでもかまいませんが、名前が事情により出せないのであれば、前者の方が簡単でしょう。 ここまで出てくれば、たくさんの人がいろいろな方法を提示してくれるでしょう。
その他の回答 (3)
- nora1962
- ベストアンサー率60% (431/717)
> SELECT tableA.a * (select 1 from tableB) > tableA.b * (select 2 from tableB) > FROM > tableA このようなSQLは文法エラーで通りません。
- bin-chan
- ベストアンサー率33% (1403/4213)
> SELECT tableA.a * (select 1 from tableB) > tableA.b * (select 2 from tableB) > FROM > tableA まだ他に何かやってませんか? SELECT tableA.a * 1, tableA.b * 2 FROM tableA にみえてしまいます。
- bin-chan
- ベストアンサー率33% (1403/4213)
FROM TableAだけで良いのですか? その「副問い合わせ」は何をしてるんですか? > どうしたら一つにまとめることができるのでしょうか? 「一つにまとめる」とは、以下みたいなことですか? SELECT TableA.ID, a.ID, b.ID, c.ID, d.ID FROM TableA, (select ID, ........ ) AS a, (select ID, ........ ) AS b, (select ID, ........ ) AS C, (select ID, ........ ) AS d where ... ;
補足
回答ありがとうございます。 説明が下手で申し訳ないです。 >その「副問い合わせ」は何をしてるんですか SELECTのselect_exprで使うための値をとってきています。 SELECT tableA.a * (select 1 from tableB) tableA.b * (select 2 from tableB) FROM tableA 結合をつかえば1回の問い合わせで済むのでしょうか?