• 締切済み

Oracle SQL 2つのテーブルを使用する書き方について

OracleSQLどころかSQLが初めてなのですが、以下のような事がしたいんです。 金額テーブル       品名マスタ 品名コード 品名 金額  品名コード 品名コード名 1      ○○ \100   1      1の名前 1      ○× \250   2      2の名前 2      △△ \200   この2つを使用して 品名 品名コード1の金額 品名コード2の金額  というテーブルをSQL上で書きたいのですが、可能でしょうか? 可能であればどういう書き方にするといいのかご指導宜しくお願いします。

みんなの回答

回答No.1

SQL自体が初めてということなので質問自体が少し 的を得ていないような気がしますので確認させてください。 (質問に対して質問で返してしまい、申し訳ありません。) 最終的には 「品名 品名コード1の金額 品名コード2の金額」 といった形のテーブルを作りたい (「SQL上で書きたい」という表現が良く理解できなかったので、「作りたい」という意味と当方で勝手に捕らえました。) ということだと思うのですが、 品名も品名コード1の金額も品名コード2の金額も全てもとの金額テーブルにある列なので品名マスタは必要無いということになります。 (品名コード名を表示するとき以外は品名マスタは要らないですし、  そもそもこの表の名前自体品名コード名マスタという表名にするべき) また、元の金額テーブルでは品ごとにレコード(行)がありますが、 「品名 品名コード1の金額 品名コード2の金額」 といった形のテーブルを作りたいということであれば1行に 元表の1行を押し込めることになりますのでsumやcountといった グループ関数というものを用いることが必要になってきます。 そもそも金額テーブルにおいて品名が○○と○×と違うのに 品名コードが同じ1でよいのでしょうか? 少しやりたいことがわからないのでもう少し質問文を修正していただいてもよろしいでしょうか。 回答についてはそれからさせてもらいたいと思います。

tanumyo
質問者

お礼

whiteline507さん、読んで頂いて光栄です。 つい先ほどこの件が解決しまして、せっかくご回答頂こうとしていたところ、申し訳ありません。大至急締め切りすべきでした。ご迷惑おかけしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • oracle SQL

    以下のようなことを実現する方法についてお教え頂きたいです。 ■テーブル [XXXマスタ] ID char(8) 上記のテーブルにはIDという項目があるのですが、このテーブルで 使用していないIDのみをSQLで抽出できないかと考えております。 ただし、なるべくならワークテーブルのようなものは利用せずに 行いたいと思っております。 いい方法があれば教えていただきたいです。

  • SQL文で質問

    SQL文で質問 いつもお世話になっております。 SQL文について質問です。 仮にですが、商品マスタというテーブルと、対応テーブルという二つのテーブルがあります。 対応テーブルには、商品コードが親コード、子コードといった形で構成されています。 対応テーブルのいくつかの親のコードを条件に、親コードと子コードを検索して、それぞれの商品名を検索したいと思っています。 現在、SQL文で、親コードに対応した商品名だけを取得しているのですが、子コードに対応する商品名も検索したいと思っています。 現在のSQL分としては、 SELECT 対応テーブル.親コード、商品マスタ.商品名、対応テーブル.子コード FROM 対応テーブル,商品マスタ WHERE 対応テーブル.親コード = 商品マスタ.商品コード AND 対応テーブル.親コード = 1000,1002,1004 このSQL文で検索した子コードで、商品マスタの商品名を検索したいのですが、どのようなSQLを書いたらよいのでしょうか。 ご教授願います。

  • OracleのSQLについて 助けてください。

    OracleのSQLについて 助けてください。 (例) テーブルA 「human」 | ID | 名前 | テーブルB 「kotoba」 | ID | 名前 | テーブルC 「kakutougi」 | ID | 名前 | テーブルD 「kotoba_have」 | human.ID | kotoba.ID | テーブルE 「kakutougi_have」 | human.ID | kakutougi.ID | テーブルAには一人一人のIDと名前が入っています。 テーブルBには言語の種類IDと種類名(英語、日本語など)が入っています テーブルCには格闘技の種類IDと種類名が入っています。 テーブルDとテーブルEはその人がどの言語がしゃべれ、どの格闘技ができるかを示しています。 テーブルD、Eはその人が複数の言語が話せ、複数の格闘技ができる場合複数のhuman.IDが入ります。 ここで日本語と英語が話せ、柔道と空手ができる人を呼び出したい場合はどのようなSQLにすればよいのでしょうか。 プログラムでwhileで回してはできるのですが、データ量が膨大のためSQLでどうにかしたいのですがわかる方いらっしゃいますでしょうか? 助けてください。よろしくお願いします。

  • SQL Group Order 連結

    はじめまして OracleSqlですが、商品マスター、料金マスターの2つがあります。 商品マスター  商品コード,名称  AAAA,AAAAA  BBBB,BBBBB 料金マスター  商品コード,開始日,金額  AAAA,2009/4/1,1000 AAAA,2009/7/1,2000  BBBB,2009/4/5,3000 BBBB,2009/7/5,4000 SQLで AAAA,AAAAA,2009/7/1,2000 BBBB,BBBBB,2009/7/5,4000 と求めたいのです。 各商品毎のコード+名称+料金マスターの最大開始日のレコード where2つの組あわせ+料金マスターの商品コードでのGroupBy+ 日付Order+最初の1件という条件になるのですが、どうもSQLエラーばかりで。 識者の方、宜しくお願いいたします。

  • ORACLE SQL 教えてください。

    オラクルSQLの初心者です。 (1)のテーブルから (2)のテーブルを作成する方法はありますか?教えて下さい。 (2)のテーブルを元に他のテーブルの色々な値を取得したいです。 (1) TEMP1 -------------------------- CODE YEAR_START YEAR_END --------------------------  01    08        11  02    08        09  03    11        11 (2) TEMP2 --------------------- CODE YEAR ---------------------  01   08  01   09  01   10  01   11  02   08  02   09  03   11

  • 集計のSQLについて

    皆さんの知恵をお借りしたいと思っています。 どなたか、良い案がある方お願いいたします。 以下のテーブルがあります。 (売上テーブル) 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   40    Bさん 鉛筆   30    Bさん 鉛筆   30        鉛筆   10        上のテーブルで、品名・購入者を集計キーとして、 金額を集計したい場合、 SELECT 品名,購入者,SUM(金額) FROM 売上テーブル GROUP BY 品名,購入者  というSQL文で,   品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   40        という結果が得られると思いますが・・・、 これを、 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   30        鉛筆   10        という結果になるようなSQL文を作りたいのです。 購入者が入っているものについては、品名・購入者で集計して、 購入者が空欄のものは集計しないようにしたいと思っています。 UNIONを使えばできるとは思うのですが、 それ以外の方法で、1回のSQL文でできる方法があれば知りたいと思っています。 よろしくお願いします。

  • オラクルのUPDATEで複数テーブル

    見ていただいてありがとうございます。 どなたか、方法がお分かりになる方、 ご教授いただけるよう宜しく御願いいたします。 ORACLEのSQL_PLUSを使用して以下のような SQLを実行するとエラーとなります。 UPDATE テーブル名1 , テーブル名2 SET テーブル名1.項目A = '2' , テーブル名1.項目B = '02' , テーブル名1.項目C = テーブル名2.項目A 当方、ACCESSとSQLサーバーでSQLの経験が若干あり、 そちらではこの記述方法で正常実行されるのですが、 オラクルでの記述方法がよくわかりません。 ネット等を利用し調べたのですが、打開策が見つからず、質問させていただこうと思った次第です。 どうか宜しく御願いいたします。

  • SQLについて

    以下のSQLを作成したいのすが 実現方法が判りません お助けください。 環境:SQL SERVER2008 実現したいこと 明細テーブルの挨拶項目にマスターA・Bからメッセージを取得したい。 基本はAマスターのメッセージを取得 コードを1つのグループとして扱いマスタBに合致する場合 マスタAでは無くてマスタBのメッセージを取得したいです。 よろしくお願いいたします。 具体的に取得したい結果は ☆望む結果になります。 コードは必要ないのですが、 判別の為一緒に表示いたしました。 マスタA 挨拶 メッセージ 000601 おはよう 000602 こんにちは 000603 こんばんは 000604 お休みなさい 000605 就寝中 マスタB(最大3つまでの組合せです) 挨拶1 挨拶2 挨拶3 メッセージ 000601 000602 000603 おはようございます。 000602 000603 こんにちは・こんばんは 明細テーブル コード 挨拶 000153 000601 000153 000602 000153 000603 000154 000602 000154 000603 000155 000604 000156 000605 ☆望む結果 コード メッセージ 000153 おはようございます。 000154 こんにちは・こんばんは 000155 お休みなさい 000156 就寝中

  • SQLが分かりません

    SQLの初心者です。 ACCESSで売上げ管理をしようと考えています。 売上げに関するテーブルは以下のようになっています。 ●売上げヘッダ テーブル   伝票番号(キー)   売上日   売上げ金額    : ●売上げ明細 テーブル   伝票番号(キー)   枝番(キー)   商品コード   商品名   単価   数量   値引金額    : 値引金額は商品ごとに決まり、値引きしなければ0が、値引きがあればその金額が入ります。 売上げ一覧を表示する時に、以下のようなイメージで、 ワークテーブルを作って、値引きがあれば「あり」と画面に表示させたいのです。 ※無い時は何も表示させません 伝票番号  売上日  売上げ金額 値引き有無 9999 2004/1/1 10,000 10000 2004/1/2 1,500 あり 10001 2004/1/2 20,000 10002 2004/1/3 18,900 10003 2004/1/4 23,500 あり 1回のSQLで実行したいのですが、SQLには詳しくないので、 どのように書けばよいか分かりません。 よろしくお願いします。 値引き区分が無ければ、売上げヘッダを見るだけなのですが、 値引きがあるかどうかは、売上げ明細まで見なければいけないので、 SQLの書き方が分からないのと、以下のようなワークテーブルを 作る必要があると思うのですが、どうなのでしょうか。 ●ワーク テーブル   伝票番号   売上日   売上げ金額   値引き区分

  • 異なるデータベース間のテーブル結合

    DB名:db1 TABLE名:得意先マスタ DB名:db2 TABLE名:ユーザマスタ 以上のように、異なるデータベースに存在する2つのテーブルをLEFT JOINさせたいです。 結合条件は ユーザマスタ.得意先コード = 得意先マスタ.得意先コード とします。 この場合の結合方法を教えてください。 以下のようなSQL文を書いても駄目でした。 SELECT * FROM db1.ADMINISTRATOR.得意先マスタ AS  得意先マスタ   LEFT OUTER JOIN db2.ADMINISTRATOR.ユーザマスタ AS ユーザマスタ ON ユーザマスタ.得意先コード = 得意先マスタ.得意先コード よろしくお願いいたします。