Kan een Join ook op kolomen?
Ik moet twee kolommen met elkaar verglijken maar krijg het niet voor elkaar.
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?
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
Gesponsorde koppelingen:
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.
Ligt aan je join/query.
Laat eens zien wat je hebt
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 !=.
Obelix en Idefix wat wil je precies zien, want ik heb nog niks.
Dit werkt niet
Dit werkt niet
Dit:
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).
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).
Hier een voobeeld van mijn database nu wil alleen pag2 zien, omdat pag3 een dochter van 2 is.
Naam | paginas_id | parent |
pag1 | 1 | 0
pag2 | 2 | 0
pag3 | 3 | 2
pag4 | 4 | 0
Naam | paginas_id | parent |
pag1 | 1 | 0
pag2 | 2 | 0
pag3 | 3 | 2
pag4 | 4 | 0
Je hebt alles in 1 tabel staan. Dan gaat een join niet werken.
Excuus. Je hebt gelijk.
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.
Je kan ook een join maken tussen een tabel en een subquery uit dezelfde tabel.
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:
(alleen even de tabel naam aanpassen, twee keer dezelfde, want ik weet jouw tabelnaam niet)
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 :)
Dank!!!!!
Toevoeging op 06/02/2012 21:34:50:
Zal ff het resultaat posten en werkt nu helemaal, mijn dank voor het meedenken.
Toevoeging op 06/02/2012 21:34:50:
Zal ff het resultaat posten en werkt nu helemaal, mijn dank voor het meedenken.
Natuurlijk kan je ook een tabel met dezelfde tabel joinen:
Dit werkt overigens alleen voor een menu met 2 lagen.
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



