[pgsql-jp: 24991] レコードをひとつだけ取り出すViewの作り方
Minoru Fukuda
fukuda @ kinol.co.jp
2002年 2月 27日 (水) 16:21:53 JST
こんにちは、福田@キノルインタラクティブです。
SELECT分の使い方についてお聞きしたいので、Postgresとは
直接関係ないかもしれないのですが、結果によってはPostgres独自の
関数を使うのかな。と思いポストしました。
質問はあるテーブルの中のレコードのうち、条件に一致するレコードを
ひとつだけ取り出すというものなのです。
/* 顧客テーブル
*/
CREATE TABLE kokyaku_table (
kokyakuid serial,
namae text
);
COPY kokyaku_table FROM stdin;
1 'Aさん'
2 'Bさん'
3 'Cさん'
\.
/* 来店テーブル
*/
CREATE TABLE raiten_table (
raitenid serial,
kokyakuid int4,
hizuke timestamp,
tenpomei text
);
COPY raiten_table FROM stdin;
11 1 2002-1-27 16:02:0+09 '本店'
12 1 2002-3-27 12:02:0+09 '駅前店'
13 1 2002-3-27 16:02:0+09 '駅前店'
14 2 2002-3-28 16:02:0+09 '本店'
15 2 2002-3-29 16:02:0+09 '本店'
\.
というテーブルとレコードがあるときに、顧客の最後の来店日を表示する View を
作るときは...
CREATE VIEW saishuu_raiten_view
AS
SELECT k.kokyakuid, k.namae, r.hizuke
FROM kokyaku_table as k
INNER JOIN
(SELECT MAX(hizuke) AS hizuke, kokyakuid FROM raiten_table GROUP BY kokyakuid) AS r
ON k.kokyakuid=r.kokyakuid;
で、結果は
# SELECT * FROM saishuu_raiten_view;
kokyakuid | namae | hizuke
-----------+-----------+------------------------
1 | 'Aさん' | 2002-03-27 16:02:00+09
2 | 'Bさん' | 2002-03-29 16:02:00+09
(2 rows)
ここで質問なのですが、下のように顧客の最終来店日と
そのときの tenpomei を表示する view を作るとすると
どのような形になるのでしょうか?
kokyakuid | namae | hizuke | tenpomei
-----------+-----------+----------------------------------
1 | 'Aさん' | 2002-03-27 16:02:00+09 | '駅前店'
2 | 'Bさん' | 2002-03-29 16:02:00+09 | '本店'
(2 rows)
長々としたメールになってしまいましたが、よろしくお願いします。
--
福田稔 Minoru Fukuda
fukuda @ kinol.co.jp
kinol interactive inc.
http://www.kinol.co.jp
pgsql-jp メーリングリストの案内