pg.ddx.io pgsql-sql@postgresql.org mailing list archivehelp / color / mirror / Atom feed
Problem with "NOT IN (subquery) 3+ messages / 3 participants [nested] [flat]
* Problem with "NOT IN (subquery) @ 2005-11-13 06:27 Steve SAUTETNER <steve@sautetner.com> 0 siblings, 2 replies; 3+ messages in thread From: Steve SAUTETNER @ 2005-11-13 06:27 UTC (permalink / raw) To: pgsql-sql Hi, I have a table named "famille" whose structure and content is : famille_code | famille_mere_famille_code | famille_libelle | famille_niveau --------------+---------------------------+-------------------+------------- --- 000000 | | Mhre | 0 I00001 | 000000 | Composants | 1 IN0001 | I00001 | Micro-processeurs | 2 IN0002 | I00001 | Mimoires RAM | 2 INS001 | IN0002 | DDR-SDRAM | 3 INS002 | IN0002 | DDR2-SDRAM | 3 INS003 | IN0002 | SDR-SDRAM | 3 IN0003 | I00001 | Cartes mhres | 2 IN0004 | I00001 | Disques durs | 2 IN0005 | I00001 | Cartes graphiques | 2 IN0006 | I00001 | Cartes son | 2 IN0007 | I00001 | Riseau | 2 IN0008 | I00001 | Lecteurs CD/DVD | 2 IN0009 | I00001 | Graveurs CD/DVD | 2 IN0010 | I00001 | Bontiers | 2 I00002 | 000000 | Piriphiriques | 1 IN0011 | I00002 | Cli USB | 2 IN0012 | I00002 | Modems | 2 IN0013 | I00002 | Imprimantes | 2 (19 rows) The first col is the family id and the second is the mother family id. I would get a list of all families that are never in the col n°2, so the families that aren't node but leaf. The query, i made was "SELECT * FROM famille WHERE famille_code NOT IN (SELECT DISTINCT famille_mere_famille_code FROM famille);" But the DB returns 0 records instead of 15. If i use a list instead of a subquery it works normaly but it's not easy to manage it like this. So if anyone can help me please ... ^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: Problem with "NOT IN (subquery) @ 2005-11-13 09:16 Stephan Szabo <sszabo@megazone.bigpanda.com> parent: Steve SAUTETNER <steve@sautetner.com> 1 sibling, 0 replies; 3+ messages in thread From: Stephan Szabo @ 2005-11-13 09:16 UTC (permalink / raw) To: Steve SAUTETNER <steve@sautetner.com>; +Cc: pgsql-sql On Sun, 13 Nov 2005, Steve SAUTETNER wrote: > Hi, > > I have a table named "famille" whose structure and content is : > > famille_code | famille_mere_famille_code | famille_libelle | > famille_niveau > --------------+---------------------------+-------------------+------------- > --- > 000000 | | Mhre | Is that a NULL famille_mere_famille_code? > The first col is the family id and the second is the mother family id. > I would get a list of all families that are never in the col n°2, so > the families that aren't node but leaf. > > The query, i made was "SELECT * FROM famille WHERE famille_code NOT IN > (SELECT DISTINCT famille_mere_famille_code FROM famille);" > > But the DB returns 0 records instead of 15. If i use a list instead of a > subquery it works normaly but it's not easy to manage it like this. > > So if anyone can help me please ... In the case where the subselect returns a NULL, the behavior of IN and NOT IN is rather unfortunate. A NOT IN B is basically NOT(A IN B) and A IN B is basically A =ANY B IIRC. However, A=ANY B only returns false if A = Bi returns false for all Bi contained in B and A = NULL returns unknown, not false, so NOT IN cannot return true if the subselect contains a NULL. If that is a null above, probably the best solution is to exclude NULLs from the subselect results. ^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: Problem with "NOT IN (subquery) @ 2005-11-14 09:47 Christian Paul B. Cosinas <cpc@cybees.com> parent: Steve SAUTETNER <steve@sautetner.com> 1 sibling, 0 replies; 3+ messages in thread From: Christian Paul B. Cosinas @ 2005-11-14 09:47 UTC (permalink / raw) To: 'Steve SAUTETNER' <steve@sautetner.com>; pgsql-sql I think that query should work. Hmmm... Weird... I tried that in my database and it is working. What do you mean by this? " If i use a list instead of a subquery it works normaly but it's not easy to manage it like this." -----Original Message----- From: pgsql-sql-owner@postgresql.org [mailto:pgsql-sql-owner@postgresql.org] On Behalf Of Steve SAUTETNER Sent: Sunday, November 13, 2005 6:27 AM To: pgsql-sql@postgresql.org Subject: [SQL] Problem with "NOT IN (subquery) Hi, I have a table named "famille" whose structure and content is : famille_code | famille_mere_famille_code | famille_libelle | famille_niveau --------------+---------------------------+-------------------+--------- --------------+---------------------------+-------------------+---- --- 000000 | | Mhre | 0 I00001 | 000000 | Composants | 1 IN0001 | I00001 | Micro-processeurs | 2 IN0002 | I00001 | Mimoires RAM | 2 INS001 | IN0002 | DDR-SDRAM | 3 INS002 | IN0002 | DDR2-SDRAM | 3 INS003 | IN0002 | SDR-SDRAM | 3 IN0003 | I00001 | Cartes mhres | 2 IN0004 | I00001 | Disques durs | 2 IN0005 | I00001 | Cartes graphiques | 2 IN0006 | I00001 | Cartes son | 2 IN0007 | I00001 | Riseau | 2 IN0008 | I00001 | Lecteurs CD/DVD | 2 IN0009 | I00001 | Graveurs CD/DVD | 2 IN0010 | I00001 | Bontiers | 2 I00002 | 000000 | Piriphiriques | 1 IN0011 | I00002 | Cli USB | 2 IN0012 | I00002 | Modems | 2 IN0013 | I00002 | Imprimantes | 2 (19 rows) The first col is the family id and the second is the mother family id. I would get a list of all families that are never in the col n°2, so the families that aren't node but leaf. The query, i made was "SELECT * FROM famille WHERE famille_code NOT IN (SELECT DISTINCT famille_mere_famille_code FROM famille);" But the DB returns 0 records instead of 15. If i use a list instead of a subquery it works normaly but it's not easy to manage it like this. So if anyone can help me please ... ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster I choose Polesoft Lockspam to fight spam, and you? http://www.polesoft.com/refer.html ^ permalink raw reply [nested|flat] 3+ messages in thread
end of thread, other threads:[~2005-11-14 09:47 UTC | newest] Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2005-11-13 06:27 Problem with "NOT IN (subquery) Steve SAUTETNER <steve@sautetner.com> 2005-11-13 09:16 ` Stephan Szabo <sszabo@megazone.bigpanda.com> 2005-11-14 09:47 ` Christian Paul B. Cosinas <cpc@cybees.com>
This inbox is served by DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox