Kan een Join ook op kolomen?
Ik heb een paginas_id waar de pagina's uniek genummerd worden. OOk heb ik een kolom die heet parent waar standaard een 0 verschijnt, behalve als het een dochter is dan komt daar het getal van de paginas_id te staan.
Nu wil ik alleen de pagina's ophalen die een dochter hebben?
Toevoeging op 06/02/2012 19:09:12:
Is het trouwen verstandig omdat op een mysql_query te doen, of is het beter omdat met een functie IF te doen na dat de database is opgehaald?
Gewijzigd op 06/02/2012 19:14:59 door Marco van den Haak
lijkt me dat je dat in een query doet (where parent != 0 ) en niet later met een if statement.
Als ik where parent != 0 zou gebruiken haal hij de dochter op en ik wil alleen de pagina's die dochters hebben er moet dus een vergelijking plaats vinden. Aangezien paginas_id namelijk 0 is ook de geen die een dochter hebben.
Laat eens zien wat je hebt
Marco van den Haak op 06/02/2012 19:06:59:
Is het trouwen verstandig omdat op een mysql_query te doen, of is het beter omdat met een functie IF te doen na dat de database is opgehaald?
In principe altijd via een query uit je database halen en niet nog in php data gaan filteren.
En overigens als je iets wilt selecteren in een database waarbij het niet aan een voorwaarde moet voldoen dien je <> te gebruiken en niet !=.
Dit werkt niet
kan ook niet. Je zal er een waarde aan moeten hangen. Dus bijvoorbeeld
En ook geen backticks gebruiken, nergens voor nodig zolang je maar geen reserved words gebruikt als kolomnamen (wat je uberhaupt niet zou moeten doen).
Naam | paginas_id | parent |
pag1 | 1 | 0
pag2 | 2 | 0
pag3 | 3 | 2
pag4 | 4 | 0
Erwin H op 06/02/2012 19:47:29:
En overigens als je iets wilt selecteren in een database waarbij het niet aan een voorwaarde moet voldoen dien je <> te gebruiken en niet !=.
Excuus. Je hebt gelijk.
Maar in dit geval kan het ook met een subquery, maar dan iets anders. Ik heb het niet heel uitgebreid kunnen testen, maar volgens mij zou het zo moeten kunnen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT naam
FROM tabel
WHERE pagina_id IN (
SELECT distinct parent
FROM tabel
WHERE parent <> 0
)
FROM tabel
WHERE pagina_id IN (
SELECT distinct parent
FROM tabel
WHERE parent <> 0
)
(alleen even de tabel naam aanpassen, twee keer dezelfde, want ik weet jouw tabelnaam niet)
Gewijzigd op 06/02/2012 20:22:47 door Erwin H
@Erwin: weer wat geleerd :)
Toevoeging op 06/02/2012 21:34:50:
Zal ff het resultaat posten en werkt nu helemaal, mijn dank voor het meedenken.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
"SELECT p.title ptitle,
p.link plink,
c.title ctitle,
c.link clink
FROM menu p
LEFT JOIN
menu c ON p.menu_id = c.parent_id
WHERE
p.parent_id = 0
p.link plink,
c.title ctitle,
c.link clink
FROM menu p
LEFT JOIN
menu c ON p.menu_id = c.parent_id
WHERE
p.parent_id = 0
Dit werkt overigens alleen voor een menu met 2 lagen.
Gewijzigd op 07/02/2012 09:51:27 door Ger van Steenderen