• ベストアンサー

2回実行のSQL文を1回にしたい

テーブルXXXがありますその中の各フィールドは以下の通りです。 フィールド A フィールド B フィールド C まずA=0の検索をしてBの値を取り出し、新たにB=取り出した値で 検索をしたいのですがSQL文が1つにできないでしょうか? 今現在、 SELECT * FROM XXX WHERE A=0 を実行してBの値を変数Dに入れ SELECT * FROM XXX WHERE B=D と実行して全てのCの値を取り出しています よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • timber
  • ベストアンサー率29% (218/739)
回答No.3

SELECT * FROM XXX WHERE B=( SELECT B FROM XXX WHERE A=0 ); No.1の回答とどちらが速いかは不明です.

masa00
質問者

お礼

ありがとうございます。 一発でOKでした。 解りにくい質問でも理解していただき助かりました。

その他の回答 (2)

  • ssm3u
  • ベストアンサー率52% (19/36)
回答No.2

SELECT * FROM XXX WHERE A=0 AND B=D ; ではダメということですか???

  • octopus
  • ベストアンサー率19% (6/31)
回答No.1

多分、副問い合わせの方法でやれば可能だと思います。 こんな感じでしょうか・・・。 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* SELECT * FROM  (SELECT *   FROM XXX WHERE A=0 )TMP_A <=== 自分で指定します。 WHERE  B=D -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* FROM句(データを引くテーブル)にSELECT文で絞り込んだものを作成し、そこから引いてくる形になっています。 上手く伝わるといいのですが・・・ という前に、上手く動くといいのですが(汗)

masa00
質問者

お礼

すばやい回答ありがとうございます。 早速ためしてみます。

関連するQ&A

  • こんなSQL文

    Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A   B | C ――――――――   2 | 10   2 | 1   1 | 10   1 | 1   1 | 11   1 | 2   1 | 1   3 | 10   2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。   B | C     B | C ――――――――― ―――――――――   1 | 10    2 | 10   1 | 1     2 | 1   1 | 11    2 | 3   1 | 2   1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。

  • SQL Developerでクエリ実行

    select * from テーブルA where カラムA2 = :バインド変数 select * from テーブルB where カラムB2 = :バインド変数 SQL Developerでエディタに記述した複数のSQLを一度に実行する際に ①同じ名前のバインド変数であっても何度も値を聞いてくるのを1回で済ませたい ②SQLごとにひらく問い合せ結果について名前が問い合せ結果1、問い合せ結果2だとわかりづらいので、固有の名前をクエリ実行時に自動でつけるようにしたい よろしくお願いします。

  • SQLの書き方について教えてください。

    SQL Server2000で下記のようなSQL文を書きたいと思っています。 テーブルAとテーブルAに無関係な2個のフィールドを 持つテーブルBがあり、テーブルAのデータをテーブルBにコピー したいと考えています。その際にテーブルBの2個のフィールドに対して 決められた値を挿入したいのですがどのように記述すればよいのか わかりません。 お分かりの方お教えいただけませんでしょうか よろしくお願いいたします。 下記の記述をしています。 INSERT INTO テーブルB ( A, B, C, D ) SELECT テーブルA.A, テーブルA.A, XXX1, XXX2 FROM reserveSETdateTRN; Cに東京 Dに品川 を入れたいと思っています

  • SQL文の実行速度について

    こんにちは。SQLを勉強しています。 質問をさせてください。 Oracleテーブル(test_table:レコード数はかなりあると考えて構いません) にnumber(int),value(varchar), code(varchar)の3つのフィールドが存在 するとします。 今、codeを指定してvalueを取得したいと考えています。 (1)---------------------------- select value from test_table where code='001'; select value from test_table where code='002'; select value from test_table where code='003'; (2)---------------------------- select code, value from test_table where code='001' or code='002' or code='003' (1)と(2)ではどちらが実行速度が速いのでしょうか? 実際に実行すればわかることですが、そういった環境が ないので、確認できません。宜しくお願い致します。

  • SQLで複数のテーブルと結合したUPDATE文

    普通のUPDATE文はUPDATEするテーブル名を一つ記入して UPDATE テーブルA SET フィールドA = 値A WHERE テーブルA.フィールドB = 値B みたいな感じですが、私のしたい事はと言うと UPDATE テーブルA,テーブルB,テーブルC SET A.フィールドA = 値A WHERE テーブルA.フィールドA = テーブルB.フィールドB AND テーブルB.フィールドB = テーブルC.フィールドC AND テーブルB.フィールドD = 値D AND テーブルC.フィールドE = 値E という具合に複数のテーブルがUPDATEするテーブルA以外のところで、互いに条件で結ばれており、FROM句でUPDATEしないテーブル名まで宣言しないといけなくなっています。そもそもこういうFROM句を使うUPDATE文は実行可能かも不明です。どなたか解決策お願いいたします。ちなみに開発ソフトはVBAを使っています。

  • SQL文に関するとある問題について

    SQL文に関するとある問題について (3) 次の出庫記録の表に対して、以下のSQL文を実行したときに得られる値が 最も大きな数が得られるものは何ですか? 該当する記号を書いてください。 --------------------------------------------------------------- 商品番号 数量 日付 PRT145 4 20090610 DP255 2 20090610 DP266 3 20090611 PRT255 2 20090611 a SELECT MAX(数量) FROM 出庫記録 b SELECT AVG(数量) FROM 出庫記録 WHERE 日付='20090610' c SELECT COUNT(*) FROM 出庫記録 d SELECT SUM(数量) FROM 出庫記録 WHERE 日付='20090611' ------------------------------------------------------------ この場合、それぞれの選択肢が出す数字は a=1 b=3 c=4 d=5 なので、正解はdでいいんでしょうか? aのMAXって、最大なのはPRT145の数量4ですが、a=に4をいれるべきか、それともMAXなのはPRT145一つだけなので1にすべきか、まずそこで躓きました。 bのAVGは4+2=6なので、それの半分の3かな? cはそのまんま4にして dはSUMなんで、3+2=5.にしちゃいましたが、間違ってるでしょうか?   宜しくお願い致します。

  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP
  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • SQL詳しい方、助けてください。

    こんにちは。 UPDATE テーブルA SET フィールドA1 = '1' WHERE フィールドA2 =(SELECT フィールドB1 FROM テーブルB WHERE フィールドB2 = 'C0' OR フィールドB2 = 'C2' AND フィールドB3='') AND フィールドA3 = '' AND フィールドA4 <> '' というSQLを作成して、動作していたので安心していたら、 テーブルBのレコード数は1件のみだと思っていたら、複数存在する場合があるとのことで、 テーブルBのレコードを追加してみたところ、、 【サブクエリは複数の値を返しました。サブクエリが = 、!= 、<、<= 、>、>= のあとに続く場合や、 サブクエリが 1 つの式として使われる場合に複数の値は許可されません。】 というエラーで終了するようになってしまいました。 そこで、 UPDATE テーブルA AS A INNER JOIN テーブルB AS B ON A.フィールドA2 = B.フィールドB1 SET A.フィールドA1 ='1' WHERE B.フィールドB2 = 'C0' OR B.フィールドB2 = 'C2' AND B.フィールドB3='' AND A.フィールドA3='' AND A.フィールドA4 <> '' としてみました。 なんだか混乱してきて、結合条件があっているかが 自分でもよくわかんなくなっていますが。 しかも、 上記のSQLをSQL SERVER 2000のクエリアナライザで 実行すると、 【キーワード 'inner' 付近に正しくない構文があります。】 というエラーが・・・。 INNER 以下はいろいろおかしいんだろうな・・・と 思っていたのですが、まさか、そんなしょっぱなで引っかかるとは思いませんでした。 いろいろ、記述方法を変更してみたり、考えたんり したんですけど、情けないことにさっぱり解りません。 どなたかお力をお貸しください。 お願いします。

  • SQL

    SQLの初心者です。 次のようなテーブルがあるとします。 項目:A , B , C , D このテーブル合計を求めたいのです。 条件は、 同一テーブルでB=10の時のAの合計とD=10の時のCの合計の合計です。 B=10の時のAの合計は「sql sum(A) from テーブル where B=10」となります。 D=10の時のCの合計は「sql sum(C) from テーブル where D=10」となります。 この2つの合計を求めたいのです。 宜しくお願いします。

    • ベストアンサー
    • MySQL