[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 メーリングリストの案内