[PHP/MySQL] Catalogus alleen root entries

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Misschien dat jullie me kunnen helpen want ik zie het even niet meer.

Ik heb een catalogus boom structuur in deze tabel:

parentidchildid
10001001
10001002
10001003
10001009
10011009
10021011


Met de volgende query:

SELECT DISTINCT a.parentid
FROM catalogstructure AS a, catalogstructure AS b
WHERE a.parentid
NOT IN (b.childid)

Probeer ik alleen de root id's op te halen.
Ik zou dus nummer 1000 moeten hebben want die komt als enige parentid niet in de childid voor.

Maar het resultaat van die query is gewoon 100, 1001, 1002.
Ik heb al van allerlei variaties geprobeerd zoals:

select parentid from catalogstructure
where parentid not in (childid)

select parentid from catalogstructure
where parentid != childid

Het zal vast en zeker simpel zijn maar ik kon deze vraag niet in de search terug vinden en ik hoop dat iemand me even in de goede richting kan wijzen.

Acties:
  • 0 Henk 'm!

Verwijderd

je moet iets doen als

code:
1
2
3
SELECT DISTINCT parentid
FROM catalogusstructure
WHERE parentid NOT IN (SELECT childid FROM catalogusstructure)


niet getest, maar 't gaat even om de subquery.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is nog de 3.x versie van MySQL.
Volgens mij ondersteunt deze dit niet.
Tenminste, ik krijg deze niet aan de praat.

Acties:
  • 0 Henk 'm!

Verwijderd

Heel smerig:

code:
1
2
3
4
5
SELECT DISTINCT parentid
FROM catalogusstructure
MINUS
SELECT DISTINCT childid
FROM catalogusstructur


Dit zijn gedachtenspinsels... ik weet niet of het werkt onder 3.x

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP:
1
2
3
4
5
$sql = "SELECT DISTINCT childid FROM catalogusstructure";

$sql = "SELECT DISTINCT parentid
FROM catalogusstructure
WHERE parentid NOT IN (".implode(',',$childids).")";


Pseudo code.. je kunt subselects gemakkelijk met 2 querietjes oplossen :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt Bosmonster.

Die oplossing werkt zonder problemen.
Niet de mooiste maar het gaat om het resultaat.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

Probeer deze eens:
code:
1
2
3
4
5
6
7
8
9
10
SELECT 
    distinct(childs.parentid)
FROM 
    catalogusstructure AS childs
LEFT JOIN
    catalogusstructure AS parents 
ON 
    childs.parentid = parents.childid
WHERE 
    parents.parentid IS NULL

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."

Pagina: 1