Andreas Dölling: Brett vorm Kopf

Hallo,

ich glaube, ich habe gerade ein Performance-Problem mit meinem Schädel.
Es geht um Folgendes: in einer Datenbanktabelle gibt es ein Feld "Unternehmen" und ein Feld "Abteilung" (ich weiß, daß man das hätte normalisieren können, aber die Datenbank ist leider eine Altlast, die mir so vorliegt...).
Nun möchte ich eine HTML-Selectbox folgendermaßen füllen:

Unternehmen 1
   Abteilung 1.1
   Abteilung 1.2
Unternehmen 2
   Abteilung 2.1
   Abteilung 2.2
   Abteilung 2.3
Unternehmen 3
... etc.

Mir ist klar, wie ich das Ganze umständlich lösen könnte: alle Abteilungen auslesen mit "SELECT Unternehmen, Abteilung FROM tbl".
Danach mit PHP sortieren etc.
Aber kann ich die Daten nicht sofort in der richtigen Struktur aus der Datenbank bekommen? Ich habe es mit "SELECT DISTINCT Unternehmen, Abteilung FROM tbl GROUP BY Unternehmen" versucht, aber in diesem Fall erhalte ich zu jedem Unternehmen nur eine einzige Abteilung.

Fällt Euch dazu etwas ein? Wie würdet Ihr es machen?
Oder ist der Weg, den ich als umständlich bezeichnet habe, gar nicht so umständlich, sondern ganz einfach der optimale?

Thanx und ciao,
Andreas

--
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
  1. Hi,

    na ja, in jedem Fall kannst du die Datenbank sortieren lassen, also
    SELECT unternehmen, abteilung
    FROM tbl
    ORDER BY unternehmen, abteilung.

    Dann erhälst du die Datensätze schon mal in der richtigen Reihenfolge.
    Für alles andere würde es jetzt sehr komplex und kommt extrem auf das DBMS an, von dem Aufwand würde ich absehen. Also entweder obige Abfrage verwenden und beim schleifenweisen Durchlauf schauen ob man noch beim gleichen Unternehmen ist, oder eben nur alle Unternehmen abfragen und dann pro Unternehmen die Abteilungen abfragen, was allerdings von der Performance nicht wirklich glücklich sein dürfte...

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hallo,

      die Datenbank ist MySQL (4.0.18).
      Aber ich glaube, Du hast recht. Der "umständliche" Ansatz scheint der angemessene zu sein.

      Ciao,
      Andreas

      --
      "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)