Ich habe eine MySQL Tabelle namens navigation, die sieht wie folgt aus:
Das Ziel ist es, dass die Ausgabe so aussieht:
News
- News Test 1
- News Test 2
- News Test 3
Artikel
- Artikel 1
- Artikel 2
- Artikel 3
Prinzip dahinter ist einfach. Es gibt eine Kategorie (category = 1) und diese haben jeweils Unter-Kategorien welche durch die parentID zugewiesen sind.
Bis jetzt habe ich das immer so gelöst:
Nun wurde mir aber gesagt dass dies sehr schlecht ist für den MySQL Server, da man generell keine Querys in einer while schleife haben sollte, was ich auch einsehe.
Mir wurde gesagt ich soll dies am besten mit einem JOIN in der Query direkt lösen.
Kann mir jemand hier auf die sprünge helfen, wie ich das genau mit einem JOIN hinbekomme, so dass die Ausgabe wieder die selbe ist?
Eventuell müsste die Tabelle um ein Feld erweitert werden (ordnungsnummer).
Das Ziel ist es, dass die Ausgabe so aussieht:
News
- News Test 1
- News Test 2
- News Test 3
Artikel
- Artikel 1
- Artikel 2
- Artikel 3
Prinzip dahinter ist einfach. Es gibt eine Kategorie (category = 1) und diese haben jeweils Unter-Kategorien welche durch die parentID zugewiesen sind.
Bis jetzt habe ich das immer so gelöst:
PHP-Code:
$result = mysql_query('SELECT * FROM navigation WHERE category = "1"') or die (mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['name']);
$result2 = mysql_query('SELECT * FROM navigation WHERE category = "0" AND parentID = "'.$row[id].'"') or die (mysql_error());
while($row2 = mysql_fetch_array($result2))
{
echo $row2[name]);
}
}
Mir wurde gesagt ich soll dies am besten mit einem JOIN in der Query direkt lösen.
Kann mir jemand hier auf die sprünge helfen, wie ich das genau mit einem JOIN hinbekomme, so dass die Ausgabe wieder die selbe ist?
Eventuell müsste die Tabelle um ein Feld erweitert werden (ordnungsnummer).
Kommentar