Re: IN or JOIN
От | Thomas F.O'Connell |
---|---|
Тема | Re: IN or JOIN |
Дата | |
Msg-id | EB643C24-102D-11D9-B9B3-000D93AE0944@sitening.com обсуждение исходный текст |
Ответ на | IN or JOIN (gearond@fireserve.net) |
Ответы |
Re: IN or JOIN
|
Список | pgsql-general |
I can't imagine a scenario where the IN would be a better choice. Is there a reason you think the JOIN is not appropriate? -tfo On Sep 25, 2004, at 7:20 PM, gearond@fireserve.net wrote: > please CC me as I am on digest > ------------------------------- > > > I have three tables, simplified for, well, simplicity :-) > > CREATE TABLE Usrs ( > usr_id serial primary NOT NULL, > name text NOT NULL, > login text NOT NULL, > CONSTRAINT PK_Usrs PRIMARY KEY (usr_id) > ); > > CREATE TABLE EmailAddrs ( > email_addr_id SERIAL NOT NULL, > email_addr VARCHAR(255) NOT NULL UNIQUE, > CONSTRAINT PK_EmailAddrs PRIMARY KEY (email_addr_id) > ); > > CREATE TABLE UsrEmails ( > usr_id INT4 NOT NULL, > email_addr_id INT4 NOT NULL, > CONSTRAINT PK_UsrEmails PRIMARY KEY (usr_id, email_addr_id) > ); > > ALTER TABLE UsrEmails > ADD CONSTRAINT EmailAddrs11_0MUsrEmail > FOREIGN KEY (email_addr_id) > REFERENCES EmailAddrs (email_addr_id); > > ALTER TABLE UsrEmails > ADD CONSTRAINT UsrEmailTypes11_0MUsrEmails > FOREIGN KEY (usr_email_type_id) > REFERENCES UsrEmailTypes (usr_email_type_id); > > > multiple 'Usrs' can have the same name, but different logins. > > > I want to find the count of usrs that: > have the name 'some_name' > and > have the email 'some_email' > > ----------------------------- > Should I use a JOIN or an IN? > If the 'IN' example below is right, and there is either: > > NO Usr with name='some_name' > OR > NO email with email='some_email' > > will it return a NULL, or a '0' count? > > my thought for an IN: > ---------------------- > SELECT COUNT(*) > FROM UsrEmails > WHERE > usr_id IN > (SELECT usr_id > FROM Usrs > WHERE name='some_name'::text) > AND > email_addr_id=(SELECT email_addr_id > FROM Emails > WHERE email='some_email'::text); > > > > > > > > ---------------------------(end of > broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html
В списке pgsql-general по дате отправления: