Kan een Join ook op kolomen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco van den Haak

Marco van den Haak

06/02/2012 19:06:59
Quote Anchor link
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?
Gewijzigd op 06/02/2012 19:14:59 door Marco van den Haak
 
PHP hulp

PHP hulp

04/05/2024 03:52:35
 
Obelix Idefix

Obelix Idefix

06/02/2012 19:19:43
Quote Anchor link
lijkt me dat je dat in een query doet (where parent != 0 ) en niet later met een if statement.
 
Marco van den Haak

Marco van den Haak

06/02/2012 19:27:12
Quote Anchor link
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.
 
Obelix Idefix

Obelix Idefix

06/02/2012 19:41:31
Quote Anchor link
Ligt aan je join/query.
Laat eens zien wat je hebt
 
Erwin H

Erwin H

06/02/2012 19:47:29
Quote Anchor link
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 !=.
 
Marco van den Haak

Marco van den Haak

06/02/2012 19:53:00
Quote Anchor link
Obelix en Idefix wat wil je precies zien, want ik heb nog niks.
Dit werkt niet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$res = mysql_query("SELECT paginas_id, `parent` FROM `pag_1_menu_1` WHERE `parent` AND `paginas_id`");  
 
Erwin H

Erwin H

06/02/2012 19:55:40
Quote Anchor link
Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE `parent` AND `paginas_id`

kan ook niet. Je zal er een waarde aan moeten hangen. Dus bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE parent = 'blabla' AND paginas_id = 123456789

En ook geen backticks gebruiken, nergens voor nodig zolang je maar geen reserved words gebruikt als kolomnamen (wat je uberhaupt niet zou moeten doen).
 
Marco van den Haak

Marco van den Haak

06/02/2012 19:56:46
Quote Anchor link
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
 
Obelix Idefix

Obelix Idefix

06/02/2012 20:09:47
Quote Anchor link
Je hebt alles in 1 tabel staan. Dan gaat een join niet werken.

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.
 
Erwin H

Erwin H

06/02/2012 20:21:54
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT naam
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
 
Obelix Idefix

Obelix Idefix

06/02/2012 20:31:51
Quote Anchor link
@Erwin: weer wat geleerd :)
 
Marco van den Haak

Marco van den Haak

06/02/2012 20:46:02
Quote Anchor link
Dank!!!!!

Toevoeging op 06/02/2012 21:34:50:

Zal ff het resultaat posten en werkt nu helemaal, mijn dank voor het meedenken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
function display_li($id) {
    // retrieve all children of $parent
    $res = mysql_query("SELECT *
    FROM pag_1_menu_1
    WHERE parent=$id
    ");
    $aantal = mysql_num_rows($res);
    if($aantal>0)return true;
    else return false;
}

      if(!display_li($row['paginas_id'])) echo "resultaat";  
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2012 09:49:18
Quote Anchor link
Natuurlijk kan je ook een tabel met dezelfde tabel joinen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Dit werkt overigens alleen voor een menu met 2 lagen.
Gewijzigd op 07/02/2012 09:51:27 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.