こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

sql文の書き方について

<A>
商品  商品番号  単価  
あああ  10     200
いいい  10     201
ううう   20     202
えええ  20     203
おおお  40     204

<B>
商品番号  会社名   数 
10       AA       3
20       BB     2
30        CC    1
40         DD    3
     
この2つの表を結合して

商品  商品番号  会社名  単価  
あああ  10       AA   200
いいい  10       AA   201
ううう   20       BB   202
えええ  20       BB   203
おおお  40       DD   204

このようにしたいのと


<C>
商品  商品番号  単価  グループ
aaa      1      0         0
iii     2        0          0
uuu      3      0        0
あああ   10      201     aaa
いい   20      202     aaa
ううう   20       203     iii
おおお  40      204    uuu

この表を

商品  商品番号  単価  グループ  あああ
あああ  10       201   aaa       1
いい   20       202   aaa        1
ううう   20       203   iii        2
おおお  40       204   uuu       3

このようにしたいのですが、どういったsql文を書けばいいのか分かりません
表がとても見にくいと思いますが、よろしくお願いします。

投稿日時 - 2014-10-07 14:46:36

QNo.8782164

困ってます

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

<A><B>のテーブル名がありませんので、
仮に、テーブル名を
<A>・・・TABLE_A
<B>・・・TABLE_B
とするなら、SQL文でテーブル結合することで行えます。

SELECT TA.商品,             …(4)
TA.商品番号,          …(4)
TB.会社名,           …(5)
TA.単価             …(4)
FROM TABLE_A AS TA        …(1)
INNER JOIN TABLE_B AS TB        …(2)
ON TA.商品番号 = TB.商品番号 …(3)

回答としては上記になります。
(1)<A>の表(テーブル)を基準にして、
(2)<B>の表(テーブル)をJOIN(結合)します。

  ※AS TAの「TA」部分はTABLE_Aの別名です。
   TABLE_Aという名称をTAという代わりの名前で使用できます。
   もともとのテーブル名が名前が長いときなどに、略称等で使用する場合などに便利です。   

   構文) テーブル名 AS テーブル代名
   ちなみに、この別名のことをエイリアスといいます。

(3)<A>と<B>の表を結合付ける条件です。
  ここが一番重要なポイントで、
<A>と<B>の項目を見比べたときに、<A>のどの項目から、
  会社名を持ってこれるかを考えてください。

  <A>の商品番号と<B>の商品番号を紐づけると、
  <B>の会社名が持ってこれますよね。

  ※すでにご存知かもしれませんが、表(テーブル)同士を結合するときに重要なのは
   テーブルのキー項目が何であるかという事を意識するとわかりやすいと思います。   
 
(4)で取得出力したい、項目名をSELECT句に、カンマ'区切り(,)で指定します。
(4)の部分では、表<A>の項目を並べています。
(5)3番目の列に、表<B>の会社名を並べています。
ここまでがSQl文の内容です。

※上記のSQL文では、INNER JOIN (内部結合)というものを使用しています。
   結合する方法にもいくつかありまして、下記のようなものがあります。
    LEFT OUTER JOIN (左外部結合)
    RIGHT OUTER JOIN (右外部結合)
    FULL OUTER JOIN (完全外部結合)
    当質問が解決したら、興味があれば調べてみると良いと思います。
    まずはこの編から、覚えて押さえておきましょう。使い方は上記のキーワードで探せば
    ネットを調べればわかりますので、ご自身で頑張ってみてください。

<C>については、下記ヒントだけ書いておきます。

From TABLE_C AS TC1
INNER JOIN TABLE_C AS TC2
ON <この部分は自分で考えてみてください。>

商品とグループをどう紐づけるかですよね。

あとは頑張ってみてください。

投稿日時 - 2014-10-09 23:11:00

お礼

回答ありがとうございます。

この問題に関しては、自分でなんとか解決していましたが、-0-y様の回答は、調べたどのサイトより分かりやすく理解することができました。

また何かありましたらよろしくお願いします。

投稿日時 - 2014-10-10 14:49:16

ANo.2

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

このsqlの質問は多数寄せられますが、
答えをコピーするだけでは進歩しませんよ。

sqlの動作を勉強したらできるできないを含め、
応用も効くと思うのですが?

投稿日時 - 2014-10-07 14:52:59

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-