Re: finding items with 0 rels for a 0 to many relationship
От | Michael Glaesemann |
---|---|
Тема | Re: finding items with 0 rels for a 0 to many relationship |
Дата | |
Msg-id | 4F410D2A-F8AA-46B2-BD9E-594893764201@seespotcode.net обсуждение исходный текст |
Ответ на | Re: finding items with 0 rels for a 0 to many relationship ("Josh Tolley" <eggyknap@gmail.com>) |
Ответы |
Re: finding items with 0 rels for a 0 to many relationship
Re: finding items with 0 rels for a 0 to many relationship |
Список | pgsql-general |
On Jun 21, 2007, at 11:57 , Josh Tolley wrote: > On 6/21/07, danmcb <danielmcbrearty@gmail.com> wrote: >> Hi >> >> I have two tables, say A and B, that have a many-to-many >> relationship, implemented in the usual way with a join table A_B. >> >> How can I economically find all the rows in table A whose id's are >> not >> in A_B at all (i.e. they have zero instances of B associated)? > > Use a left join. For instance, say there are a.id and b.id columns, > which are the primary keys in A and B respectively. Also say A_B > contains columns aid and bid which reference a.id and b.id > respectively. > >> SELECT * FROM A LEFT JOIN A_B ON (A.ID = A_B.AID) WHERE A_B.BID IS >> NULL; Alternatively you can use EXCEPT. Using Josh's schema: SELECT id FROM A EXCEPT SELECT aid FROM A_B. You'll want to check with EXPLAIN ANALYZE, but in general I suspect the outer join is faster. Michael Glaesemann grzm seespotcode net
В списке pgsql-general по дате отправления: