Tach!
Nachdem der Name der Kategorie ja aus der selben Spalte kommt wie der Name der Unterkategorie, muss der Anfang sohl so lauten:
SELECT l.name AS Name, l.url AS URL, c.name AS Unterkategorie, c2.name AS Kategorie
FROM links AS l
INNER JOIN categories AS c ON c.id = l.category_id
INNER JOIN categories AS c1
ORDER BY l.id ASC
>
> So ungefähr, oder?
Da fehlt die zweite Join-Bedingung. Ohne diese hast du sozusagen zwei Inseln. Von diesen beiden Inseln/(Teil)mengen wird nun jeder mit jedem verbunden, was ein kartesisches Produkt ergibt (à la 3 × 4 = 12). Ein JOIN ohne ON ist meist nicht das, was man will, also ON c1.id = c.parent\_id. Und das c2 im Select muss c1 heißen (oder das c1-Alias c2).
> Und jetzt bin ich mit meinem Latein am Ende. Egal, was ich jetzt womit auch kombiniere - die Ausgabe ist entweder leer oder es kommt eine Fehlrmeldung. Deshalb ist "Wie geht das jetzt" leider schon die spezifischste Fragenstellung, die ich momentan anbieten kann. =/
Wortlaute von Fehlermeldungen sind auch immer hilfreich beim Helfen.
dedlfix.