From: | "Luiz Matsumura" <luiz(at)planit(dot)com(dot)br> |
---|---|
To: | "Paul Linehan" <linehanp(at)tcd(dot)ie>, "Chuck Roberts" <croberts(at)gilsongraphics(dot)com> |
Cc: | <pgsql-novice(at)postgresql(dot)org> |
Subject: | Re: Join three tables and specify criteria... I know this should be easy! |
Date: | 2014-09-03 23:07:40 |
Message-ID: | F9960F5F9E9A4197A7D8CF39DB04FABA@notedellluiz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
From: Paul Linehan
Sent: Friday, August 29, 2014 1:43 PM
To: Chuck Roberts
Cc: pgsql-novice(at)postgresql(dot)org
Subject: [NOVICE] Join three tables and specify criteria... I know this should be easy!
Hi all, having a bit of a brain burp day! :-)
I have
CREATE TABLE user
(
user_id INTEGER PRIMARY KEY,
user_name VARCHAR(25),
);
CREATE TABLE language
(
iso_code CHAR(2) PRIMARY KEY,
language_name VARCHAR(30)
);
CREATE TABLE user_language
(
ul_user_id INT,
ul_iso_code CHAR(2),
PRIMARY KEY (ul_user_id, ul_iso_code),
CONSTRAINT ul_user_id_fk FOREIGN KEY (ul_user_id) REFERENCES user (user_id),
CONSTRAINT ul_iso_code_fk FOREIGN KEY (ul_iso_code) REFERENCES language (iso_code)
);
Then I input data thus.
INSERT INTO user VALUES(1, 'Sandor');
INSERT INTO user VALUES(2, 'Gabor');
INSERT INTO language VALUES ('EN', 'English');
INSERT INTO language VALUES ('DE', 'German');
INSERT INTO user_language VALUES(1, 'EN');
INSERT INTO user_language VALUES(1, 'DE');
INSERT INTO user_language VALUES(2, 'EN');
Now, I want the user who speaks English and the German - I may need to specify 3, 4
or conceivably even 5 languages.
I have done this, but I'm stuck :-)
SELECT u.user_name, l.language_name
FROM user u
JOIN user_language ul
ON u.user_id = ul.ul_user_id
JOIN language l
ON ul.ul_iso_code = l.iso_code
this gives me
Sandor, German
Sandor, English
Gabor, English
I really want Sandor's id - that's all that really counts.
Give me the ids of all who speak 'EN' and 'DE' (or
possibly 'EN', 'DE', 'NL' and 'FR') for example.
TIA and rgs,
May be something like bellow can help you ?
SELECT ul.ul_user_id
FROM user_language ul
JOIN ( select ul_user_id from user_language ul WHERE ul.ul_iso_code = 'EN' ) t1 ON t1.ul_user_id = ul.ul_user_id
WHERE ul.ul_iso_code = 'DE'
From | Date | Subject | |
---|---|---|---|
Next Message | Marc Richter | 2014-09-04 08:49:57 | Re: PG 9.1 much slower than 8.2 ? |
Previous Message | Stuart Nadin | 2014-09-03 15:15:27 | Unable to bootstrap standby server |