[pgsql-jp: 35791] Re: INNER JOIN について
    HIRANO Yoshitaka
    y-hirano @ arp-nt.co.jp
       
    2005年 8月  3日 (水) 11:32:02 JST
    
    
  
平野です。
テーブルを一度削除して作り直したところ、最初のメールのSQL文が
正常に動くようになりました。
お答えいただいたSQL文でも、すべて正常な結果が表示されました。
お答えくださった皆様、有難うございました。
基本的な検証が足りず、申し訳ありません。
>藤沢様
今後、同じエラーが出た際には「別スキーマのデータを取り出していないか」
という点についてもまず確認してみようと思います。
ありがとうございました。
-----Original Message-----
From: pgsql-jp-bounces @ ml.postgresql.jp
[mailto:pgsql-jp-bounces @ ml.postgresql.jp]On Behalf Of Takao Kato
Sent: Tuesday, August 02, 2005 5:04 PM
To: pgsql-jp @ ml.postgresql.jp
Subject: [pgsql-jp: 35778] Re: INNER JOIN について
加藤@川崎です。
簡単な話題のときだけシャシャリでてくる… ^^;
です。At Tue, 2 Aug 2005 15:35:45 +0900,
HIRANO Yoshitaka wrote:
> 管理には、以下の2つのテーブルを使用します。
> ・会員スキル( kaiin_skill )
> ・スキルマスタ( skill_master )
..snip..
> この状態で、会員ID = 5 の会員が持つスキル名の一覧を表示しようと思い、
> 下記のSQL文を実行しました。
> -------------------------------------------
>    select
>    kaiin_skill.kaiin_id,
>    kaiin_skill.skill_id,
>    skill_master.skill_name
>    from kaiin_skill
>    inner join skill_master on
>  ( kaiin_skill.skill_id=skill_master.skill_id )
>    where
>    kaiin_skill.kaiin_id=5;
..snip..
以下で試しましたが、(予想通り)問題ありませんでした。
# primary/references切るのは避けました。_o_
test=> CREATE TEMP TABLE skill (k_id int,skill_id int);
test=> CREATE TEMP TABLE smaster (skill_id int,skill_name text);
test=> INSERT INTO skill VALUE (1,1)
test=> INSERT INTO skill VALUE (1,2)
test=> INSERT INTO skill VALUE (5,1)
test=> INSERT INTO skill VALUE (5,3)
test=> INSERT INTO skill VALUE (5,4)
test=> INSERT INTO smaster VALUE (1,'A');
test=> INSERT INTO smaster VALUE (2,'B');
test=> INSERT INTO smaster VALUE (3,'C');
test=> INSERT INTO smaster VALUE (4,'D');
test=> INSERT INTO smaster VALUE (5,'E');
test=> SELECT * FROM skill INNER JOIN smaster USING(skill_id) WHERE k_id =
5;
 skill_id | k_id | skill_name
----------+------+------------
        1 |    5 | A
        3 |    5 | C
        4 |    5 | D
(3 rows)
まぁinner joinを使わなくても、
SELECT skill.k_id,smaster.* FROM skill,smaster
WHERE skill.k_id = 5 AND skill.skill_id = smaster.skill_id;
でも同じ結果を得ることができます(した)。
実テーブル・データ的にみて、なにか考慮漏れがあるのではないでしょうか?
では
-------------------------------------------------------------
加藤@川崎在勤
    
    
pgsql-jp メーリングリストの案内