- 締切済み
SQLを教えてください。
以下に5つのテーブルがあるとします。 (1)全体テーブル ・登録順番号(Key) ・登録名 (2)商品テーブル ・項目コード(Key) ・品名コード(Key) ・商品登録順番号(Key) ・商品サイズ(Key) ・品名 (3)商品単価テーブル ・項目コード(Key) ・品名コード(Key) ・商品登録順番号(Key) ・商品サイズ(Key) ・登録順番号(Key) ・商品単価 (4)新_商品単価テーブル ・項目コード(Key) ・品名コード(Key(Key)) ・商品登録順番号 ・商品サイズ(Key) ・登録順番号(Key) ・新_商品単価 (5)詳細テーブル ・登録順番号(Key) ・品名コード(Key) ・原価項目コード(Key) ・商品数量A ・商品数量B 上記のテーブルから、以下の条件に合致する「(1)の登録名」「(2)の品名」「(4)の新_商品単価×(5)の商品数量※」を取得したい。 ※商品数量Bに値があれば商品数量Bを、値がなければ商品数量A 【条件1】全てAND条件 新_商品単価テーブルの項目コードが100 新_商品単価テーブルの品名コードが50 新_商品単価テーブルの新_商品単価×詳細テーブルの商品数量※<0 商品単価テーブルの商品単価×詳細テーブルの商品数量※>0 ※商品数量Bに値があれば商品数量Bを、値がなければ商品数量A 上記で抽出出来るレコードに加えて、以下 【条件2】全てAND条件 新_商品単価テーブルの項目コードが200~300あるいは400~500 新_商品単価テーブルの新_商品単価×詳細テーブルの商品数量※=0 商品単価テーブルの商品単価×詳細テーブルの商品数量※>0 ※商品数量Bに値があれば商品数量Bを、値がなければ商品数量A どのようなSQLで抽出できますでしょうか?? DBはAccessです。
- tomo-cafe-93
- お礼率51% (105/204)
- SQL Server
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kana_keiko
- ベストアンサー率40% (113/282)
特に難しい問題ではなく、SQLを書くのは簡単ですがどこが分からないのでしょうか? さっぱり分からなくても、SELECT~くらいは分かりますよね。
関連するQ&A
- SQLの書き方(UPDATE文)
SQLの書き方の質問です。 売上Tと商品Mというテーブルがあったとして、 売上Tには商品コード、数量、金額という項目が 商品Mには商品コード、単価という項目が それぞれあったとします。 売上Tの金額=売上T.数量×商品M.単価 この売上Tの金額を更新するのに、update文でできるだけシンプルに高速に動くSQL文を作成したいのですが、どのような書き方がよいと思いますか? 件数は例えば売上が100万件、商品が10万件あった場合を想定して。 以上よろしくお願いいたします。
- ベストアンサー
- Oracle
- オラクルのビューについて
(顧客テーブル) 項目名 顧客コード、顧客名、顧客名カナ (商品テーブル) 項目名 商品コード、商品名、受注単価 (受注テーブル) 項目名 受注番号、顧客コード、受注年月日、納入予定年月日 (受注明細テーブル) 項目名 受注番号、商品コード、受注数量 を使って次のビューを作ります。 (商品別受注日計データ) 項目名 商品コード 商品名 受注単価 受注年月日 日計商品別受注数量 受注数量(受注明細テーブル)の合計 日計商品別受注金額 受注単価*日計商品別受注数量 このときに日計商品別受注金額を求めるには先に日計商品別受注数量を求めておかなければなりませんが、これを一つのSELECT文で行う事は可能でしょうか。 そのまま一つのSELECT文でやろうとするとGROUP BYでうまくいかないのですが、 やはり先に日計商品別受注数量を求めておかなければいけないのですか? どっちにしろやり方がわかりません。
- ベストアンサー
- その他(データベース)
- ACCESSで複数の条件で集約したい
ACCESS2002使用、winXPです。 ACCESSで複数の条件で集約したいのですが方法がわかりません。 例をあげますと、青果の取引を集計しているとして、「青果物コード」テーブル(コード、品名)があり、「取引履歴」(コード、数量、単価)テーブルがあるとします。 クエリで「コード、品名、単価、金額」を求めたいのですが、この際に、コード別でさらに単価別に集約したいのです。 コード 品名 単価 数量 100 かぼちゃ 80 2 100 かぼちゃ 85 1 100 かぼちゃ 80 2 100 かぼちゃ 82 1 110 きゅうり 15 1 110 きゅうり 15 3 このようなデータなら 100 かぼちゃ 80 4 100 かぼちゃ 85 1 100 かぼちゃ 82 1 110 きゅうり 15 4 となるようにしたいのです。 どのようなクエリにすればよいかご教授ください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- SQL文で表すには
以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価 仕入番号 仕入先名 0001 みかん 100 001 A 0002 りんご 200 002 B 0003 ぶどう 300 003 C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額 0001 みかん 001 A 5 100 500 0001 みかん 002 B 7 100 700 0001 みかん 003 C 3 100 300 0002 りんご 001 A 7 200 1400 0002 りんご 002 B 8 200 1600 0002 りんご 003 C 6 200 1200 0003 ぶどう 001 A 10 300 3000 0003 ぶどう 003 B 9 300 2700 0004 null 004 null 20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号, tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。
- ベストアンサー
- Oracle
- SQLストアド INSERTの質問です
仕入データから、最後に仕入した商品毎の単価をテーブルにINSERTしたい 仕入日 商品コード 単価 数量 金額 5/1 001 150 1 150 5/2 002 160 1 160 5/3 001 145 1 145 5/4 001 146 1 146 5/20 002 170 1 170 上記のような仕入データから商品コード単位の最終@の テーブルを作成したと思います 商品コード 最終仕入@ 001 146 002 170 宜しくお願い致します
- ベストアンサー
- SQL Server
- SQL、すべての部品を…
以下のような問い合わせをしたい時のSQL表現について教えていただきたいです。 【テーブル名と属性】 テーブル名(*属性A,属性B)のように示します。 *は主キーです。 部品(*部品番号, 部品名) 供給(*部門番号,*部品番号,*業者番号,単価,数量) 供給は 業者Aが部品Bを部門Cに供給している… ということを表します。 【問い合わせ】 登録されているすべての部品の供給を受けている部門の部門番号の一覧 分かる方、すみませんがアドバイスをいただけないでしょうか。
- ベストアンサー
- MySQL
- 【至急】SQLの結合について教えてください(2)
select * from A select ef from B where ef = '3' かつ、A.ab = B.ab and A.cd = B.cd 至急質問させてください。 上記SQLを結合したいです。 取得したいデータはAのテーブルの全項目で、 取得条件として、Aのテーブルのキー項目 = Bのテーブルのキー項目に、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。
- ベストアンサー
- SQL Server
- ある条件でのSQLの取得方法について
以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー 項目1 10 X 20 Y ・テーブルB キー 項目2 項目3 10 5 C 10 6 D 12 6 E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は 別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、 複数件あるかも知れません。 無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと 同じレコードに、項目2が同じデータの情報を出力します。 項目2が同じデータが無い場合はこの情報は出力しません。 項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー フラグ 項目1 項目2 項目3 項目2が同じキー 項目2が同じ値 10 テーブルA X 10 テーブルB 5 C 10 テーブルB 6 D 12 E 20 テーブルA Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?
- ベストアンサー
- Oracle
- 1つのSQLで2段階の抽出を行いたい
恐らくそれほど複雑なSQLではないと思いますが、中々SQLが作成できず困っています。 回答いただければ嬉しいです。 以下のテーブルがあったと仮定します。 テーブル名: 売上げ明細 カラム: ・商品ID … 売上げ明細なので一意ではありません ・単価 … 同じ商品IDでも、レコードによって単価は異なります ・数量 … 1~5の整数のみとします 実際のデータは以下の通りです。 商品ID,単価,数量 1001,50,2 1001,60,5 1002,90,3 1003,60,5 1003,80,4 1003,90,1 1004,60,3 上記データを以下の通り抽出するには、どのようなSQLを組めばいいでしょうか? 1.まず各商品IDの中から単価が最大のレコードだけを取り出す 商品ID,単価,数量 1001,60,5 1002,90,3 1003,90,1 1004,60,3 2.次に数量でgroup by して、件数をカウントする 数量,件数 1,1 3,2 5,1 1つのSQL文で2の結果が得られれば、途中の抽出条件は特に問いません。 ちなみにMySQL5を使っています。 よろしくお願いします。
- ベストアンサー
- MySQL