phpbar.de logo

Mailinglisten-Archive

Re: SELECT
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SELECT



Hi Benjamin,

> ich habe 2 Tabellen mit folgendem Aufbau:
> kategorien
> +----+-------------+--------+
> | id | name        | parent |
> +----+-------------+--------+
> |  1 | Briefmarken |      0 |
> |  2 | Inland      |      1 |
> |  3 | Ausland     |      1 |
> |  4 | bis 1950    |      2 |
> |  5 | bis 1980    |      2 |
> +----+-------------+--------+
> artikel
> +----+-------------+----------+
> | id | name        | kategorie|
> +----+-------------+----------+
> |  1 | Test1       |        4 |
> |  2 | Test2       |        4 |
> |  3 | Test3       |        5 |
> |  4 | Test4       |        3 |
> +----+-------------+----------+
> Ich möchte alle Artikel aus allen Kategorien unterhalb
> Kategorie 1 anzeigen lassen.
> 
> Irgendwie sitze ich aber auf der Leitung und komme nicht
> weiter als zur 2. Ebene (Kategorie 2 und 3):
> 
> SELECT artikel.id, artikel.name
> FROM artikel, kategorien
> WHERE artikel.kategorie=kategorien.id AND kategorien.parent=1

Tja, solange es noch keine DB gibt, die Rekursionen selbsttätig auflösen
kann, musst du dir da selbst helfen...

Ich denke, ich würde der Artikel-Tabelle ein Textfeld spendieren. Dann
bastelst du etwas Code, der automatisch dieses Feld mit einer
kommaseparierten Liste der übergeordneten Kategoriern füllt, also so:
artikel
+----+-------------+----------+---------+
| id | name        | kategorie| parents |
+----+-------------+----------+---------+
|  1 | Test1       |        4 | 4,2,1   |
|  2 | Test2       |        4 | 4,2,1   |
|  3 | Test3       |        5 | 5,2,1   |
|  4 | Test4       |        3 | 3,1     |
+----+-------------+----------+---------+

Dann geht die Abfrage so:
SELECT id,name FROM artikel WHERE 1 IN parents;

Sollte die Kategorie-Liste zu viele Knoten haben, dann musst du die
parents-Referenz wohl in eine Extratabelle packen.

Gruß Jan

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive