プロが教える店舗&オフィスのセキュリティ対策術

SELECT
(副問い合わせ).a,
(副問い合わせ).b,
(副問い合わせ).c,
(副問い合わせ).d
FROM
TableA
※副問い合わせの抽出条件は同じ

このように同じ副問い合わせが複数あるとそれだけ処理が重くなるのでしょうか?
どうしたら一つにまとめることができるのでしょうか?

A 回答 (4件)

 この情報では、出来ることもあれば出来ないこともある。

効率が悪いこともあるしそれが最善であることもある。
 としか書けないです。答えになってませんよね(苦笑)

 そうですね。あなたが書いたselect文を全部省略せずに書いてください。テーブル名とフィールド名は適当に変えてもかまいません。でもそれ以外の分は何も変えずに省略せずに書きましょう。

 又は、テーブルの定義と、あなたが求める結果を日本語で省略せずに書いてください。この場合は、出来れば、フィールド名・テーブル名も変えて欲しくないですね。最低でも、あなたが求める答えを作るのに必要なテーブル間・フィールド間の関係が解るだけの説明が必要です。

 フィールド名やテーブル名がそのまま全部出せるならどちらでもかまいませんが、名前が事情により出せないのであれば、前者の方が簡単でしょう。
 ここまで出てくれば、たくさんの人がいろいろな方法を提示してくれるでしょう。
    • good
    • 0

> SELECT tableA.a * (select 1 from tableB)


> tableA.b * (select 2 from tableB)
> FROM
> tableA

このようなSQLは文法エラーで通りません。
    • good
    • 0

> SELECT tableA.a * (select 1 from tableB)


> tableA.b * (select 2 from tableB)
> FROM
> tableA
まだ他に何かやってませんか?
SELECT tableA.a * 1, tableA.b * 2 FROM tableA
にみえてしまいます。
    • good
    • 0

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回の問い合わせで済むのでしょうか?

補足日時:2012/07/27 22:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す