- 締切済み
二つのテーブルから一文でセレクトするには?
以下の二つのテーブルがあるとします。 在庫テーブル 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文の発行で済ませたいときはどの様に書くのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
>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 ・・・
- osamuy
- ベストアンサー率42% (1231/2878)
こんなのとか: 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フィールドを含めないほうがよいのでは。
お礼
早速のご回答ありがとうございます。 これは多分二つのテーブルを結合して セレクトしてるのでしょうが day の前にある h や name の前にある zは 何を意味しているのでしょうか? 普通の人なら調べれば分かるのでしょうが 検索能力が著しく低いのでご勘弁下さい。
補足
在庫は0ならなしの間違いでした。 お詫びして訂正いたします。