• 締切済み

SELECT文が上手く書けません

会社からSQLのSELECT文を書けと言われて3日目です。PostgreSQL のシステムでWHERE以下が WHERE 売上年月 = ? AND 得意先コード = ? AND 売上種別 = ? としました。画面上では売上年月、得意先コード、売上種別で検索できるようになっているのですが、3種類全て入力しないとエラーになります。この内1種類の入力でも検索できるようにしたいのですが、どのように書けばいいでしょうか? ANDをORに変えたりしたのですが上手くいきません。 全体のSELECT文は external.売上= SELECT 売上番号、売上日、得意先コード、売上区分、金額、入力日 FROM 売上一覧表 WHERE 売上年月 = ? AND 得意先コード = ? AND 売上種別 = ? です。 よろしくお願いします。

みんなの回答

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.2

何を使って書こうとしていますか? 普通に考えれば画面上で未入力の項目をチェックして、入力された項目だけが検索対象になるようにSQL文を作成しますが?

kumahas
質問者

お礼

「普通に考えれば画面上で未入力の項目をチェックして、入力された項目だけが検索対象になるようにSQL文を作成しますが?」 そうなんです!まさにその通りなんですが、それをどう書けばいいのかが分かりません。 もう1つ甘えついでに言うと「何を使って書こうとしていますか?」 の何をが何かも分かりません。 やっぱり最初からきちんと勉強しないと駄目なんでしょうか?

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

ワイルドカードとか、like使えば入力しない条件は、全部含むとみなせるでしょう。

参考URL:
http://www.wakhok.ac.jp/biblion/1994/DB/subsection2.4.3.5.html

関連するQ&A

  • SQL文を教えて下さい

    VB2008、SQL Server で開発をしています。 下記の条件でデータを取得したいのですが、SQL文がうまくできず、困っています。 おわかりの方、教えてください。 仕様:得意先マスタ(得意先M)の全件と、売上テーブル(売上T)を読みます。     売上テーブルの商品コードの商品名を商品マスタ(商品M)より取得します。     得意先マスタの全得意先を取得する必要があります。     すべての得意先の売上データが存在するわけではありません。 ACCESS上でクエリを作成し、SQLビューにすると、こうなります。 inptSyoCD:画面から入力した商品コード 1,まず、クエリ1: SELECT 売上T.伝票日付, 売上T.伝票番号, 売上T.得意先コード, 売上T.明細区分, 売上T.商品コード, 商品M.商品名称 FROM 売上T LEFT JOIN 商品M 売上T.商品コード = 商品M.商品名 WHERE 売上T.明細区分=1 AND 売上T.商品コード= inptSyoCD ; 2,次に、実際に処理するSQL文: SELECT 得意先M.得意先コード, 得意先M.得意先名称,       クエリ1.伝票日付, クエリ1.伝票番号, クエリ1.明細区分, クエリ1.商品コード, クエリ1.商品名  FROM 得意先M LEFT JOIN クエリ1 ON 得意先M.得意先コード = クエリ1.得意先コード ORDER BY 得意先M.得意先コード,売上T.伝票日付,売上T.商品コード; この2つをひとつのSQL文にする方法がわかりません。 よろしくお願いいたします。

  • Select文のパフォーマンスについて

    Select文のパフォーマンスについて質問です。 (1)select * from table1 where col1='00001' and kbn in (1,2,3,4) (2)select * from table1 where col1='00001' and (kbn = 1 or kbn = 2 or kbn = 3 or kbn = 4) (1)と(2)ではどちらがパフォーマンスがよいのでしょうか? SQLServer2008

  • Select文1 マイナス Select文2

    テーブルA ユーザーID,地名,県名,評価 テーブルB ユーザーID,県名,制覇flag のような二つのテーブルがあると仮定してSelect文1、 "select 県名,count(地名) from テーブルA where ユーザーID=1 group by 県名 order by count(地名);" の結果が 県名,count(地名) 北海道,30 東京,22 京都,15 名古屋,10 鳥取,9 沖縄,8 であるとし、 Select文2、 "select 県名 from テーブルB where usrid=1 and 制覇flag='true'" の結果が、 県名 北海道 東京 とします。 このSelect文1の結果から、Select文2の結果を引いて 県名,count(地名) 京都,15 名古屋,10 鳥取,9 沖縄,8 の結果を得るにはどうすればよいでしょうか? Mysqlのバージョンは5.0.21です。

    • ベストアンサー
    • MySQL
  • MySQLのselect文の設定に関して

    MySQLのselect文で、IDを例えば10001~10010までを検索する場合はどうすればいいのか教えて頂けないでしょうか? select * from table_A where ???

    • ベストアンサー
    • MySQL
  • 複合検索のselect文

    eclipseとmySQLで登録した情報を検索する機能を作っています。 図書館にあるようないくつかの条件を入力すると検索されるようなものを作りたいのですが、DAOのselect文をどう書けばいいかわかりません。 andでつなげるとnullが入ったときに機能しなくなりますし・・・ なにかヒントをいただけませんか?

  • SELECT 文の書き方

    SQLServer 2005 使用中です。 以下のような2つのテーブルがあります。 ・売上テーブル(T_URI)   商品コード,商品名,売上日   0001,りんご,2009/08/01   0002,ごりら,2009/08/01   0003,ラーメン,2009/08/01 ・企画テーブル(T_KIKAKU)   企画コード,企画名,商品コード,期間開始日,期間終了日,更新日   01,大売出し,0001,2009/08/01,2009/08/04,2009/08/04 12:34:56   02,サマーセール,0003,2009/08/03,2009/08/10,2009/08/06 13:55:12   03,売り尽くし,0001,2009/08/01,2009/08/02,2009/08/01 12:34:10 【やりたいこと】  以下のように商品ごとに、最新の企画名を表示させたく思っています。   商品コード,商品名,売上日,企画コード,企画名   0001,りんご,2009/08/01,01,大売出し     ※1   0002,ごりら,2009/08/01,NULL,NULL      ※2   0003,ラーメン,2009/08/01,NULL,NULL     ※3  ※1「りんご」は2つのテーブルに跨っているが、更新日が新しいものを表示  ※2「ごりら」は企画テーブルに無いのでNULL  ※3「ラーメン」は企画テーブルにあるが、期間外なのでNULL 【やってみたこと】  以下のような SQL 文を流すと、   SELECT T_URI.商品コード, T_URI.商品名, T_URI.売上日,       T_KIKAKU.企画コード, T_KIKAKU.企画名   FROM T_URI LEFT JOIN T_KIKAKU    ON (T_URI.商品コード = T_KIKAKU.商品コード)    AND (T_URI.売上日 Between T_KIKAKU.期間開始日 And T_KIKAKU.期間終了日)   ORDER BY T_URI.商品コード  このように余計な行まで出てしまいます。   商品コード,商品名,売上日,企画コード,企画名   0001,りんご,2009/08/01,03,売り尽くし    ←これがいらない。   0001,りんご,2009/08/01,01,大売出し   0002,ごりら,2009/08/01,NULL,NULL   0003,ラーメン,2009/08/01,NULL,NULL  ここからどのように SQL 文を記述すれば良いでしょうか。

  • sql select文の作り方で困っています

    C#2010で作ったアプリ から sql サーバー2008のデータベースにselect文を発行する際に困っています 検索キーワードが3つあるのですが、3つのキーワードの組み合わせでselect文を発行したいのですが、種類がたくさんできてしまい 困っています 例えば、検索キーワード A、B、Cの3つとすると、以下の組み合わせで7種類ものselect文を作るのが煩わしいです GetData(A) GetData(B) GetData(C) GetData(A,B) GetData(A,C) GetData(B,C) GetData(A,B,C) これらを1つのselect文でさばくには、どうすれば良いでしょうか? ご指導よろしくお願いいたします

  • SELECT文でこんなことはできるでしょうか?

    例えば、日付別の売上のリストを作る場合に SELECT date,SUM(kingaku) AS goukei FROM uriage WHERE date BETWEEN '2007/01/01' AND '2007/01/31' GROUP BY date ORDER BY date を発行して, date goukei 2007/01/01 10000 2007/01/03 20000 2007/01/04 30000 2007/01/06 20000 2007/01/07 40000 2007/01/08 50000 ・・・ を取得したとして、 これを date goukei 2007/01/01 10000 2007/01/02 0 2007/01/03 20000 2007/01/04 30000 2007/01/05 0 2007/01/06 20000 2007/01/07 40000 2007/01/08 50000 ・・・ というように、データが1件もない日付も 間にはさむ方法はあるでしょうか? 以上、よろしくお願いします。

  • SQLのSELECT文教えてください。

    VB5.0で、DBはSqlServer2000です。 SQL文のSELECT文で質問です。 ○A_TABLEの構成(概略) ・・・担当コード1・・・担当コード2 ○TANTO_TABLE 担当コード/担当名 (質問)TANTO_TABLEからA_TABLEの担当コード1と担当コード2の担当名を抽出したいのです。 次のSQLだと担当コード1のみしか抽出できません。 効率よく担当コード1と2の担当名を抽出するSQLを教えてください。お願いします。 SELECT 担当名 FROM A_TABLE,TANTO_TABLE WHERE A_TABLE.担当コード1 = TANTO_TABLE.担当コード

  • UPDATE文

    また、投稿させていただきます。 言語 VB6.0 DB ORACLE9i 接続 oo4o 売上高のデータを更新したいんです。 DBは2つあります。変換マスタ、売上高 ○変換マスタのデータ 変換コード 得意先コード   得意先名  1      100      あああ  2      200      いいい  3      300      ううう っいう風にデータがあります。 ○売上高のデータ 変換売上コード 売上名  1       NULL  2       NULL  3       NULL  4       NULL ていう風にデータがあります。 ●更新後の売上高のデータ 変換売上コード 売上名 100      あああ 200      いいい 300      ううう  4       NULL 変換マスタの変換コードと売上高の変換売上コードが一緒なら変換マスタの得意先コードのデータを 売上高の変換売上コードを更新し、変換マスタの得意先名を売上高の売上名に更新したいんですが自分で書いたソースでは更新後の変換売上コードの「4」→「NULL」になって帰ってくるんです。変換マスタになかったらそのままのデータにしたいのですが、どうかお願いします。ソース乗せます。 W_SQL = "UPDATE " W_SQL = W_SQL & "売上高 " W_SQL = W_SQL & "SET ( " W_SQL = W_SQL & "売上高.変換売上コード,売上高.売上名) = " W_SQL = W_SQL & "( SELECT 得意先コード,得意先名" W_SQL = W_SQL & " FROM 変換マスタ WHERE 売上高.変換売上コード = 変換マスタ.変換コード)"