PFZ.nl - PHP Community: select not exists in vraag - Databases - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 01-02-2012 16:24
  • j termaat
  • Groep: Forumleden
  • Posts: 289
  • Actief sinds: 27-02-2005
Heb een table products die ik op het veld products_id wil vergelijken met de table products_content.
Indien products_id niet voorkomt in de table products_content toon dan p.products_id + p.products_model

Bij mij blijft de query leeg als result.
Uiteraard doe ik wat verkeerd maar wat?

1
2
3
4
5
6
7
8
9
select 
p.products_id,
p.products_model
from 
products p
where 
p.manufacturers_id = 20 and
not EXISTS
(select products_id from  products_content )

#2 01-02-2012 17:12
Dit kun je beter met een LEFT JOIN doen, zie de wiki.
DELETE FROM world WHERE dbms='mysql';
http://www.yapf.net - http://yapf.blogspot.com/

#3 01-02-2012 17:16
1
2
3
4
5
6
7
8
SELECT  p.products_id,
	p.products_model
FROM    products p
WHERE	p.manufacturers_id = 20 
AND NOT EXISTS
    (SELECT NULL 
     FROM  	products_content pc
	 WHERE	pc.products_id = p.products_id)


1
2
3
4
5
6
SELECT  p.products_id,
	p.products_model
FROM    products p
,	products_content pc
WHERE	pc.products_id(+) = p.products_id
AND	pc.products_id IS NULL

#4 01-02-2012 19:06
  • Jason
  • Groep: Forumleden
  • Posts: 445
  • Actief sinds: 12-03-2011

Bekijk Post Op 01-02-2012 17:16 schreef Robbert Schellingerhout:

1
2
3
4
5
6
SELECT  p.products_id,
	p.products_model
FROM    products p
,	products_content pc
WHERE	pc.products_id(+) = p.products_id
AND	pc.products_id IS NULL
Deze kende ik niet, is vies (geen standaard SQL) maar wel leuk.

Ik zou gewoon een LEFT JOIN gebruiken wanneer ik een LEFT JOIN bedoel:
1
2
3
4
5
SELECT  p.products_id,
	p.products_model
FROM    products p
  LEFT JOIN products_content pc ON pc.products_id = p.products_id
WHERE	pc.products_id IS NULL;

#5 01-02-2012 19:21
Ik dacht gooit er eens iets door van het ORACLE

#6 01-02-2012 19:35
  • Jason
  • Groep: Forumleden
  • Posts: 445
  • Actief sinds: 12-03-2011

Bekijk Post Op 01-02-2012 19:21 schreef Robbert Schellingerhout:

Ik dacht gooit er eens iets door van het ORACLE
Ik had al een vermoeden. Ik verwacht ook dat vele databases hier niks mee kunnen, een foutmelding op geven. Oracle kent tegenwoordig toch gewoon een LEFT JOIN?

#7 01-02-2012 20:08
Ja, maar ik begin er niet aan om in ORACLE een JOIN te schrijven in de FROM clause.

Met handen en voeten gebonden aan heel strikte "coding regeltjes" ;-)

#8 02-02-2012 08:10

Quote

Met handen en voeten gebonden aan heel strikte "coding regeltjes" ;-)
Och arme kerel.... ja wat sommige mensen bedenken om de code "mooi" te maken... je zou denken dat er ook een aspect van efficiency bij moet, maar nee.
DELETE FROM world WHERE dbms='mysql';
http://www.yapf.net - http://yapf.blogspot.com/

#9 02-02-2012 19:01
  • j termaat
  • Groep: Forumleden
  • Posts: 289
  • Actief sinds: 27-02-2005
Sorry voor de late reactie. Het was erg druk. Mooie oplossingen. Met dank.


Inloggen wachtwoord vergeten? Aanmelden