ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:dadadanda 二つのテーブルから一文でセレクトするには?
困り度:
  • すぐに回答を!
以下の二つのテーブルがあるとします。


在庫テーブル zaiko_table

id | name | zaiko
-------------------
1 |みかん| 1
-------------------
2 |りんご| 0
-------------------
3 |とまと| 1
-------------------


販売テーブル hanbai_table

id | day | tenki
-------------------
1 | 3-2 | 晴れ
-------------------
2 | 3-2 | 晴れ
-------------------
1 | 3-1 | 雨
-------------------


在庫テーブルのIDはその商品のプライマリーキーです
zaikoは1なら在庫有り、2なら在庫なしとします。


販売テーブルのIDは在庫テーブルで決めた商品を表しています。
dayは売れた日付、tenkiはその日の天気です。


3月2日に売れた商品でまだ在庫のある物をセレクトしたいと思います。
該当する商品の名前とそれが売れた日の天気が知りたいのです。

これを一回のSQL文の発行で済ませたいときはどの様に書くのでしょうか?
質問投稿日時:08/03/16 00:11
質問番号:3866469
最新から表示回答順に表示

回答

 

回答者:yambejp >day の前にある h や name の前にある zは

2つ以上データを結合するのであればそれぞれのテーブルに
おなじ名前のフィールドがある可能性は否定できません。
具体的にどちらのテーブルから参照しているかをしるために

select hanbai_table.day, zaiko_table.name
from zaiko_table
inner join hanbai_table on zaiko_table.id=hanbai_table.id
・・・

のようにテーブル名をフィールドの前につけます。
ただテーブル名をいちいち書くとSQL文が冗長になりますので、
別名(エイリアス)をつけて管理することができます。
hanbai_tableはh、zaiko_tableはzなど自分の好きな別名をつければ
だいぶ見やすくなります。
ふつうは別名をつける時にはASをつかうとわかりやすいでしょう

select h.day, z.name
from zaiko_table as z
inner join hanbai_table as h on z.id=h.id
・・・
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/19 14:01
回答番号:No.2
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:osamuy こんなのとか:

select h.day, z.name, h.tenki
from zaiko_table z inner join hanbai_table h on z.id=h.id
where h.day='2008-3-2' and z.zaiko=1

hanbai_tableにtenkiフィールドを含めないほうがよいのでは。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/16 01:41
回答番号:No.1
この回答への補足在庫は0ならなしの間違いでした。
お詫びして訂正いたします。
この回答へのお礼早速のご回答ありがとうございます。
これは多分二つのテーブルを結合して
セレクトしてるのでしょうが
day の前にある h や name の前にある zは
何を意味しているのでしょうか?

普通の人なら調べれば分かるのでしょうが
検索能力が著しく低いのでご勘弁下さい。
 
最新から表示回答順に表示