phpbar.de logo

Mailinglisten-Archive

[php] MySQL Child-Parent

[php] MySQL Child-Parent

Thomas Blum tbaddade at gmx.de
Fr Aug 13 20:19:26 CEST 2010


Hej Seong,


Am 13.08.2010 um 19:45 schrieb Seong-Min Kang:

> Seong-Min Kang schrieb:
>> http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
>
> Noch eine kleine Anmerkung:


Danke dir für den Hinweis.

Da die Struktur später gecached wird, wollte ich gern das parent-child  
verwenden.
Hier sehe ich eigenlicht keine Probleme, auch weil die Struktur nicht  
sonderlich groß werden wird.


Ich habe nun einmal folgendes

SELECT t1.name AS lev1, t2.name AS lev2
FROM table AS t1
LEFT JOIN table AS t2 ON t2.re_id = t1.id

Das gibt mir folgendes aus:

Array (
  [0] => Array (
    [lev1] => Cat 1
    [lev2] => Cat 1 . 1 )
  [1] => Array (
    [lev1] => Cat 1
    [lev2] => Cat 1 . 2 )
  [2] => Array (
    [lev1] => Cat 1 . 1
    [lev2] => )
  [3] => Array (
    [lev1] => Cat 1 . 2
    [lev2] => )
  [4] => Array (
    [lev1] => Cat 2
    [lev2] => Cat 2 .1 )
  [5] => Array (
    [lev1] => Cat 2 .1
    [lev2] => ) )


Notiere ich ein

WHERE t1.id = t2.re_id


bekomme ich das

Array (
  [0] => Array (
    [lev1] => Cat 1
    [lev2] => Cat 1 . 1 )
  [1] => Array (
    [lev1] => Cat 1
    [lev2] => Cat 1 . 2 )
  [2] => Array (
    [lev1] => Cat 2
    [lev2] => Cat 2 . 1 ) )


Erhalten möchte ich gern am besten so ein Resultat

Array (
  [0] => Array (
    [name] => Cat 1
    [id] => 1
    [re_id] => 0 )
  [1] => Array (
    [name] => Cat 1 . 1
    [id] => 3
    [re_id] => 1 )
  [2] => Array (
    [name] => Cat 1 . 2
    [id] => 4
    [re_id] => 1 )
  [3] => Array (
    [name] => Cat 2
    [id] => 2
    [re_id] => 0 )
  [4] => Array (
    [name] => Cat 2 . 1
    [id] => 5
    [re_id] => 2 ) )


Daher vermute ich, das man hier mit Subselects arbeiten müsste.


besten Dank und viele Grüße Thomas




php::bar PHP Wiki   -   Listenarchive