[pgsql-jp: 35778] Re: INNER JOIN について
Takao Kato
sirius @ jp.fujitsu.com
2005年 8月 2日 (火) 17:04:09 JST
加藤@川崎です。
簡単な話題のときだけシャシャリでてくる… ^^;
です。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 メーリングリストの案内