重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

現在、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
のようにです

よろしくお願いいたします

A 回答 (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)を使用することと、条件分岐の組込み関数を使えばよいかと。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なんとなくできるような気がします。
勉強し、解決します。
対応してくださり、ありがとうございました。

お礼日時:2007/04/13 10:50

>また、質問は説明不足でした。


>表示したいのは、
> 名前 | 部署名 | 商品名 | 日付
>  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.商品名;
    • good
    • 0

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
でした。
すみませんが、よろしくお願いいたします

補足日時:2007/04/12 16:25
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
外部結合がどうも弱くて・・・。
とても助かります。

お礼日時:2007/04/11 18:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す