
現在、Postgresを使って簡単なシステムを作っていますがどうしても
わからないので質問させていただきます。
四つのてーぶるがあります。
(1)名簿
名前 | 部門
aaa 1
bbb 1
ccc 2
(2)部門表
部門 | 部門名
1 第1営業
2 第2営業
(3)商品表
商品id | 商品名
1 りんご
2 ババナ
(4)売上
No | 名前 | 商品id | 日付
1 aaa 1 2007/04/07
2 ccc 1 2007/04/07
3 aaa 1 2007/04/08
このようなとき以下の表を一度に作れますか。
第1営業でりんごを売ったかどうか、売った場合は最新日付を表示
したいのです。
具体的には
名前 | 日付
aaa 2007/04/08
bbb
のようにです
よろしくお願いいたします
No.3ベストアンサー
- 回答日時:
ANo.2の回答は間違ってました無視してください。
bbbの部署名と商品名がnull表示されているのを見落としていました。
select um.名前,case when hi is not null then b.部署名 else null end,s.商品名,hi
from (select m.名前,m.部門,u.商品id,max(u.日付) as hi
from (売上 as u) right outer join (名簿 as m) on (u.名前 = s.名前 and s.商品id = '1')
where m.部門 = '1'
group by m.名前,m.部門,u.商品id) as um
left outer join 商品表 as s on (um.商品id = s.商品id)
,部門表 as b
where um.部門 = b.部門
ですかねぇ。
テスト環境が無いので実行していませんが、
サブクエリー(またはView)を使用することと、条件分岐の組込み関数を使えばよいかと。
回答ありがとうございます。
なんとなくできるような気がします。
勉強し、解決します。
対応してくださり、ありがとうございました。
No.2
- 回答日時:
>また、質問は説明不足でした。
>表示したいのは、
> 名前 | 部署名 | 商品名 | 日付
> aaa 第1営業 りんご 2007/04/08
> bbb
>でした。
>すみませんが、よろしくお願いいたします
名称を表示したいのならば、
もっとも基本的なテーブル結合を追加するだけです。
部門表と商品表をfrom句に追加して、
where句に結合条件を追加すればいいんだけど?
select m.名前,b.部署名,s.商品名,max(u.日付)
from (売上 as u) right outer join (名簿 as m) using(名前),部門表 as b, 商品表 as s
where u.商品id = '1'
and m.部門 = b.部門
and u.商品id = b.商品id
and m.部門 = '1'
group by m.名前,b.部署名,s.商品名;
No.1
- 回答日時:
select m.名前,max(u.日付)
from (売上 as u) right outer join (名簿 as m) using(名前)
where u.商品id = '1'
and m.部門 = '1'
group by 名簿.名前
かな?
テスト環境ないので動く保障はしませんが、
外部結合とグルーピング使えば出来るでしょう。
この回答への補足
回答のSQLを試しましたが、うまくできませんでした。
postgreSQL 8.0を使っています。
また、質問は説明不足でした。
表示したいのは、
名前 | 部署名 | 商品名 | 日付
aaa 第1営業 りんご 2007/04/08
bbb
でした。
すみませんが、よろしくお願いいたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
ソート順の一番若い者を取得する
-
副問合せの書き方について
-
バインド変数について
-
クエリ表示と、ADOで抽出したレ...
-
SQL Left Join で重複を排除す...
-
MySQL NULLだけをカウントして...
-
updateを1行ずつ実行したい。
-
Excel2000でレーダーチャートの...
-
SQLにて特定の文字を除いた検索...
-
selectした大量データをinsert...
-
WordpressのContact form 7でzi...
-
sqlで、600行あるテーブルを100...
-
SQLについての質問
-
同じテーブルの内容を異なる列...
-
select文のwhere句に配列を入れ...
-
期間の重複を調べるSQL文につい...
-
同じサブクエリが複数出てくる...
-
LEFT JOIN とRIGHT JOINの合体...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報