• 締切済み

SQLの条件式の作成に関して

PL*SQLを作成しているのですが うまくいかず質問させていたたくことにしました。 SQL初心者ですがよろしければご教示ください。 テーブル名 カラム名 TMP     DATA,TIME LIST     NO,WNO BOOK    SNO,TITLE 上記をふまえた上で DATAへNOをUPDATEかけたいのですが その条件は ・BOOK.SNO=LIST.WNOかつTMP.TIME=LIST.WNOのLIST.NOの抽出 ・TMP.TIME is not null ・BOOK.TITLE is not null ・distinct TMP.DATA ・TMP.DATA is not null 以上です。 どなたかよろしくお願いしますm(_ _)m

  • malot
  • お礼率50% (1/2)
  • Oracle
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

>BOOKテーブルだけは他の二つのDBとは別なので >いつもbook@serialで呼び出しているのですが どうして最初に書かないのか理解に苦しみます。 update tmp set data=(select no from list,book@serial where book.sno=list.wno and tmp.time=list.wno) where not(data is null)

malot
質問者

お礼

ありがとうございました! すいませんイマイチよくわかっておりませんでした。 必要だと注意されて気がついたもので・・・ あとすいませんやっぱりdistinct必要でしたm(_ _)m あとは自分で考えて見ます。 回答ありがとうございました。

回答No.1

条件の >・distinct TMP.DATA が意味不明ですが・・ update tmp set data=(select no from list,book where book.sno=list.wno and tmp.time=list.wno) where not(data is null) で良いように思うのだけど。

malot
質問者

補足

ご回答ありがとうございます! >distinct・・ これは別のSQLでの話と混在させてしました。申し訳ありません。 一つ書き忘れたものがありまして BOOKテーブルだけは他の二つのDBとは別なので いつもbook@serialで呼び出しているのですが 回答していただいたSQL文の中のbookに@serialを つければ呼び出せますでしょうか?

関連するQ&A

  • SQL文を教えてください

    1-a,1-b,2-a,2-b,3-a,3-b,4-a,4-b,5-a,5-bというカラムがあるとき。 以下の条件を満たす行を抽出するのに、 検索速度の早いSQLの書き方はありますか? (条件)N-aに値有りのとき、N-bは値有り  ただし、1-aから5-a全て値なしのときは対象外 ※こんな書き方は思いつくのですが、遅そうで・・・ ( (1-a is not null AND 1-b is not null) or (2-a is not null AND 2-b is not null) or (3-a is not null AND 3-b is not null) or (4-a is not null AND 4-b is not null) or (5-a is not null AND 5-b is not null) ) and not(1-a is null AND 2-a is null AND 3-a is null AND 4-a is null AND 5-a is null)

  • Where句のNot条件をAnd条件にしたい!

    現在where句でNot(A is not null and B is not null)という条件をしているSQLがあるのですが、この表現をNot句を使わずに表現するとなるとどのように表現したら良いのでしょうか? SQL以前の問題だと思うのですが、上手く表現できずに件数が合わずに困っています。どなたか助言お願い致します。

  • sql文のwhere句について

    <環境>sqlserver SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には 条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか? 空白時パラメータは以下のとおり入ってきます。 @no="" …完全一致 @name="%%" …部分一致 例) SELECT * FROM テーブル WHERE (NO = @no) and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name)) NAMEは上記クエリにて取得できています。 NOのところはどのようにすればよいでしょうか?

  • T-SQL パラメータがNULLの場合条件含めず

    お世話になります。 SQL Server での T-SQLのWhere句のパラメータがNullであった場合に これをWhere句から除外したいのですが・・・ 今まで、こういう場合には、SQL文をプログラム上で作成してそのSQL文を ソースにしてきたのですが、動作速度や汎用性を考えてストアドプロシジャーを使用するのが今後の為と思いこちらで質問させていただきました。 例えば・・・条件のところから WHERE     IF @パラメータ1 Is Not Null         (dbo.TEST.A =< @パラメータ1) AND     IF @パラメータ2 Is Not Null         (dbo.TEST.B =< @パラメータ2) AND このように記述してみたのですが、WHEREが記述された後ではダメなようで・・・次に WHERE     CASE         WHEN @パラメータ1Is Not Null THEN (dbo.TEST.A = @パラメータ1) AND         WHEN @パラメータ2Is Not Null THEN (dbo.TEST.B = @パラメータ2) AND     END 上記にように記述してもやはりエラーが。 WHERE句の後にパラメータを評価し、WHERE句に含めるか、 含めないか記述するにはどうすればいいでしょうか? 初歩的な事かもしれませんが、何卒よろしくお願いいたします。

  • SQL初心者なので教えてください。

    毎度ここにお世話になっております。 売上詳細という表の中にNOとSYOHIN_CDの列があるとします。 Noは1~10まであり、SYOHIN_NAMEにはNo6の列だけ文字が入っています。 ここで、No1~N5はSHYOHIN_NAMEはNULLで、No6~No10のいずれかのSYOHIN_NAMEに文字が入っている物を検索するにはどうしたらいいでしょう? SELECT * FROM hanbai.売上 AA where EXISTS (select * from hanbai.売上詳細 BB where BB.NO between 1 and 5 and SYOHIN_NAME is null and BB.NO between 6 and 10 and SYOHIN_NAME is not null); 構文間違っているので表示されませんが・・・ちゃんと表示されるSQLを教えてください。お願いします。オラクルです。 説明がおかしくてわかりづらいと思いますが、補足しますのでよろしくおねがいします。

  • グループ毎の条件抽出

    はじめまして。よろしくお願いします。 今、以下のようなデータで以下の抽出条件でデータ取得行いたいと思っています。 ■ TABLEA NO 1~n 識別 A~Z 状況 1~4(null有り) 日付 YYYY/MM/DD 1.識別毎にグループ分けをしたい。 2.「1.」の中で状況が最大値の物のみ抽出 3.「2.」の中で日付が最大値の物のみ抽出 4.識別が無いものは各行出力 5.「1.~3.」の中で抽出されたデータのTABLEAのカラムを全て取得 今は以下のようなSQLで実現させようとしておりますが、 インラインビューを何度もネストしている為あまりパフォーマンスが 良くないです。もっと効率的なSQLが在れば教えていたければと思います。 SELECT /* 4.対象TABLEAのデータを取得 */ * FROM TABLEA, /* 2.グループの中で日付日付の最大値を求める */ (SELECT MAX(TABLEA.日付) AS 最新日付, TABLEA.状況 TABLEA.識別 FROM TABLEA, /* 1.識別毎に状況の最大値を求めるグループ */ ( SELECT MAX(状況) AS 状況最大値, 識別 FROM TABLEA WHERE 識別 IS NOT NULL GROUP BY 識別 )TMP WHERE TABLEA.識別 = TMP.識別 TABLEA.状況 = TMP.状況最大値 )TMP2 TABLEA.日付 = TMP2.最新日付 TABLEA.状況 = TMP2.状況 TABLEA.識別 = TMP2.識別 /* 3.識別は無いものを取得 */ UNION SELECT * FROM TABLEA WHERE 識別 IS NULL 以上です。よろしくお願いします。

  • SQLのSelect Countについて

    たびたびお世話になります。 以下のSQLを実行したらエラーになりましたが原因がわかりません。 select count(A), A from TableA where A > 0 and B is not null; 同時に該当するデータ件数とその項目を取得したかったのですが、なぜ上記のSQLがエラーになるのかわかりません。 教えてください、お願いします_(._.)_

  • sqlスクリプトエラーその2について

    以下のコマンドを実行するとtrueのところでエラーになります。 以前実行したときはうまくいったのですが原因がよくわかりません。 C:\>mysql\bin\mysqladmin -u root -p CREATE sample2 Enter password: **** C:\>mysql\bin\mysql -u root -p sample2 < c:\database.sql Enter password: **** ERROR 1054 at line 22: Unknown column 'true' in 'field list' <database.sql>-- ユーザを表すテーブル create table schedule_user ( id integer primary key, -- ユーザID name text not null, -- 名前 mailaddress text not null, -- メールアドレス password text not null); -- パスワード -- 予定を表すテーブル create table schedule ( id integer primary key, -- 予定ID user_id integer not null, -- この予定を入れたユーザのユーザID subject text not null, -- 予定の題名 content text not null, -- 予定の内容 start_time timestamp not null, -- 予定の開始日時 end_time timestamp not null, -- 予定の終了日時 place text, -- 予定の場所 comment text, -- 予定のコメント is_publish bool not null); -- 予定の公開/非公開フラグ -- テスト用のデータ insert into schedule_user values(1, 'itboost','motomatu@itboost.co.jp', 'itboost'); insert into schedule values(1, 1, '予定1', '予定1です', '2003-01-01 10:00', '2003-01-01 10:30', 'A社', '予定1のコメントです。', true); insert into schedule values(2, 1, '予定2', '予定2です', '2003-01-01 10:00', '2003-01-02 10:30', 'B社', '予定2のコメントです。', false); insert into schedule values(3, 1, '予定3', '予定3です', '2003-01-01 20:00', '2003-01-03 22:30', 'C社', '予定3のコメントです。', true); ご教授よろしくおねがいします。

  • SQL文でダブルクォートか

    SQL文でダブルクォートかアポストロフィーか迷っています!?  以下のSQL文の  name varchar(30) not null default " ,等の  最後から2番目に " ダブルクォートがあります。  教本を見ながら入力したのですが、' ' アポストロフィーが2個あるようにも見えます。 この場合、どちらが正規でしょうか!    以下問題のSQL文です。  よろしくお願いします。 CREATE DATABASE xmas; USE xmas; book_id int not null auto_increment, name varchar(30) not null default " , org varchar(50) not null default ", addr varchar(80) not null default", tel varchar(20) default ", mail varchar(40) default ", course varchar(30) default ", nums integer default 0, PRIMARY KEY (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    • ベストアンサー
    • MySQL
  • phpMyAdminのSQLで、SQL文を登録が

     phpMyAdminのSQLで SQL文を登録するため、以下のエラーメッセージの中にあるCREATE DATABASE xmas;で始まる  SQL文を実行したところ、以下のエラーメッセージがでて、登録でできずに困っています。  どうしたら登録できますか!?    宜しくお願いします。    エラー 実行した SQL: CREATE DATABASE xmas; MySQL のメッセージ: ドキュメント #1007 - Can't create database 'xmas'; database exists サーバ "127.0.0.1" 上でクエリを実行する: ドキュメント CREATE DATABASE xmas; USE xmas; CREATE TABLE xmastran ( book_id int not null auto_increment, name varchar(30) not null default '' , org varchar(50) not null default '', addr varchar(80) not null default'', tel verchar(20 default '', mail varchar(40) default '', course varchar(30) default '', nums integer default 0, PRIMARY KEP (book_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    • ベストアンサー
    • MySQL