[pgsql-jp: 32600] Re: 似たフィールドに同じ参照テーブルを使いたい

Ryosuke Hosoi hosoi @ ryo.com
2004年 3月 27日 (土) 13:40:44 JST


細井です

# 7.2.3ならサブクエリはまだちょっと遅いハズなので。。。

From: "sekip-" <sekip- @ nifty.com>
Subject: [pgsql-jp: 32598] Re: 似たフィールドに同じ参照テーブルを使いたい
Date: Sat, 27 Mar 2004 13:26:59 +0900
Message-ID: <003601c413b3$bfd38280$0b01a8c0 @ ponm2c>

> 関本です。
> ごとうさん、早速のお返事ありがとうございます。
> 
> > SELECT id, name,
> > (SELECT ken_mei FROM ken WHERE ken_no=member.ken_now)as ken_now,
> > (SELECT ken_mei FROM ken WHERE ken_no=member.ken_old)as ken_old
> > FROM member WHERE id=1;
> > 
> > こんな感じでしょうか。動作は確認していないので確かではありませんが。
> > もっと効率の良い方法がありそうですが、今はこれが精一杯...
> 
> ken_mei を kenmei にしたら望み通りの動作をしてくれました!
> 括弧でselect文を入れて それに別名をつけるなんて発想が出来ませんでした。
> やはりSQL文を勉強しないとだめですね。
> 
> ありがとうございました。
> 
> 

すいません、ごとうさんにケチをつけるわけではないんですが、
サブクエリを使わなくても、kenを2つ別名をつけてFROMに並べて

SELECT m.id, m.name, kn.kenmei AS kenmei_now ko.kenmei AS kenmei_old
  FROM member AS m, ken AS kn, ken AS ko
 WHERE m.id = 1
   AND m.ken_now = kn.ken_no
   AND m.ken_old = ko.ken_no
;

という感じでいいと思いますよ

-- 
 Ryosuke Hosoi / 細井 良祐
 mailto:hosoi @ ryo.com http://www.ryo.com/
 PGP Public Key http://www.ryo.com/ryo/hosoi.ryo.com.asc
 fingerprint = 4F39 61B0 2034 3A5C DFE8  FBCB 7B99 90CF EBE1 A3F3



pgsql-jp メーリングリストの案内