3 messages in com.mysql.lists.mysql-deRE: Umstrukturierung| From | Sent On | Attachments |
|---|---|---|
| Alex | 21 Feb 2007 05:28 | |
| RICH...@qvc.com | 21 Feb 2007 06:09 | |
| Tim | 22 Feb 2007 01:30 |
| Subject: | RE: Umstrukturierung![]() |
|---|---|
| From: | Tim (TCon...@gmx.net) |
| Date: | 02/22/2007 01:30:38 AM |
| List: | com.mysql.lists.mysql-de |
Hallo,
Hallo Alex,
das ist eine Nested Sets Aufgabe :)
Ich würde die Tabelle ein wenig umdesignen nach diesem Schema:
Einmal abgesehen davon dass Nestet Sets super interessant sind (hab ich selber erst vor kurzem kennen gelernt) kann man das aber auch über ein left join auf dieselbe Tabelle lösen (angenommen die Tabelle heißt "regionen"):
SELECT R1.name as land, R2.name as bundesland, R3.name as stadt LEFT JOIN regionen as R2 ON R1.id = R2.ukid LEFT JOIN regionen as R3 ON R2.ukid = R3.ukid
FROM regionen as R1 WHERE ... R1.name = 'Deutschland'
[ungetestet]
Du referenzierst die Tabelle also mit sich selbst. Das ganze ist performancetechnisch aber nicht ganz so gut. Beim Link oben zum Thema Nested Sets ist ein Performanceverglich zu finden, der beim Auslesen ziemlich schlecht abschneidet. Wenn es aber darum geht, erst einmal eine kurzfristige Lösung zu bekommen, ist die Abfrage oben denke ich erst einmal machbar. Du solltest Dir aber langfristig wirklich überlegen, entsprechend umzustellen.
Liebe Grüße Tim




