Toon posts:

[MySQL] 2 queries samenvoegen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tabel met daarin categorien die er simpelgezegd als volgt uit ziet:

TABLE categorie (
categorieID
parentID
naam
)

Als parentID gelijk is aan 0 dan is het een hoofdcategorie. Nu wil ik alle hoofdcategorieen met de daarbijhorende subcategorien uitlezen. Dit is niet het probleem:

SELECT * FROM categorie WHERE parentID = 0

LOOP
SELECT * FROM categorie WHERE parentID = {categorieID van de huidige categorie}
END LOOP

Ook dit werkt goed. Nu wil ik alleen een soort om 10 items tegelijk te tonen in een lijst. Daarvoor moet ik neem ik aan de Queries joinen maar ik kom er niet uit.

Het resultaat van de query moet zijn bijvoorbeeld:

- Hoofdcat 1
- subcat 1.1
- subcat 1.2
- subcat 1.3
- subcat 1.4
- Hoofdcat 2
- subcat 2.1
- subcat 2.2
- Hoofdcat 3
- subcat 3.1

Na 10 moet de loop dus stoppen. Wie kan me helpen deze queries te combineren zodat het werkt?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Lees dit eens: http://www.webgoeroe.net/item/277
Wat jij wilt gaat niet lukken in sql denk ik, dat zul je vanuit de applicatie zelf moeten regelen.

Localhost, sweet localhost


Verwijderd

wat is de andere tabel structuur?

puur sql? of moet het in php?

[ Voor 34% gewijzigd door Verwijderd op 24-07-2003 17:54 . Reden: toevoeging ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Evt kan je zoiets doen:
SQL:
1
2
3
4
5
6
7
8
9
SELECT 
  IFNULL(parent.cid, child.cid) as pcid,
  IFNULL(parent.cname, child.cname) as pcname,
  IF(parent.cid IS NULL, 0, child.cid) as ccid,
  child.cname as ccname
FROM
  categorie child 
  LEFT JOIN categorie parent ON child.parentid = parent.cid
ORDER BY pcid, ccid


Waarbij je in je uitspugende code even op moet letten dat als ccid == 0 het om een hoofdcategorie gaat, indien dat van belang is :)

Btw, mijn query kan je zo ombouwen dat ie precies datgene toont wat jij als lijstje geeft, tenzij je meer dan 1 niveau hebt uiteraard :p
Recursief kan niet (zo goed) met SQL.

[ Voor 27% gewijzigd door ACM op 24-07-2003 18:07 ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
blaat_aap: je hebt maar 1 tabel nodig

SELECT * FROM categorie AS c1 INNER JOIN categorie AS c2 ON c1.parentid=c2.id

@topicstarter: wil je alle categoriën hebben of alleen de categoriën die ook sub categoriën hebben?

[ Voor 31% gewijzigd door djluc op 24-07-2003 18:04 ]


Verwijderd

Topicstarter
Thanx ACM, dat was ie.
Pagina: 1