Mirla: Doppelter Werte nur einmal aus MYSQL-DB

Hio,

ich habe eine Tabelle in meiner Datenbank, die folgende Struktur hat:

id,  gruppe ,  bezeichnung , ...
.., gruppe 1, abc          , ...
.., gruppe 1, def          , ...
.., gruppe 1, ghi          , ...
.., gruppe 2, jkl          , ...
.., gruppe 2, mno          , ...

Jede Gruppe möchte ich in einer eigenen Tabelle ausgeben mit dem Gruppennamen (gruppe 1, gruppe 2) als Überschrift.

Muss ich dazu eine verschachtelte MYSQL-Abfrage machen, um die Überschrift nur einmal zu bekommen, oder gibt es dafür eine einfache Lösung, um bestimmte Werte nur einmal auszugeben?

Denn im Moment sähe meine Lösung so aus:

$get1 = "SELECT gruppe FROM ...";  
...  
while  
{  
  echo $row->gruppe;  
  $get2 = "SELECT bezeichnung FROM ... WHERE gruppe = '$row->gruppe'";  
  ...  
  while  
  {  
    echo $row->bezeichnung;  
  }  
}

Danke schon mal.

  1. entweder suchst du GROUP BY oder DISTINCT (als sonderfall der gruppierung)

    1. Hm, mit GROUP BY gruppe wird mir aber nur die jeweils erste Zeile dieser Gruppe aus der DB ausgegeben!?

      1. Was ja logisch ist.

        Ich bräuchte sowas wie

        SELECT ONCE(gruppe), ... o.ä.

        1. Ich bräuchte sowas wie
          SELECT ONCE(gruppe), ... o.ä.

          Und wie bidde soll das funktionieren? Wie soll das Resultat aussehen, welches du von der Datenbank bekommst?

          Frank

          1. Ja, je mehr ich drüber nachdenk, desto mehr zweifel ich an der Umsetzung :D

            Also ist die Verschachtelung die einzige Lösung? (außer vielleicht mitzählen, ob der Gruppenname schon mal ausgegebn wurde!?)

  2. Hallo,

    SELECT DISTINCT gruppe FROM ...

    ... ist übrigens kein gültiger Tabellenname ;)

    Ciao, Frank

  3. Hallo,

    ich habe eine Tabelle in meiner Datenbank, die folgende Struktur hat:

    id,  gruppe ,  bezeichnung , ...
    .., gruppe 1, abc          , ...
    .., gruppe 1, def          , ...
    .., gruppe 1, ghi          , ...
    .., gruppe 2, jkl          , ...
    .., gruppe 2, mno          , ...

    Jede Gruppe möchte ich in einer eigenen Tabelle ausgeben mit dem Gruppennamen (gruppe 1, gruppe 2) als Überschrift.

    ich zitiere einfach mich selbst:

    hört sich nach einer Kreuztabelle an :-)
    MySQL bietet keine eingebaute Unterstützung für Kreuztabellen :-(

    Was Du tun kannst, entnimm bitte diesem Archivthread.

    Freundliche Grüße

    Vinzenz

    1. Hui, das sieht umfangreich aus :D

      Danke, werds mir mal zu Gemüte führen :-)

  4. echo $begrüßung;

    Jede Gruppe möchte ich in einer eigenen Tabelle ausgeben mit dem Gruppennamen (gruppe 1, gruppe 2) als Überschrift.
    Muss ich dazu eine verschachtelte MYSQL-Abfrage machen, um die Überschrift nur einmal zu bekommen, oder gibt es dafür eine einfache Lösung, um bestimmte Werte nur einmal auszugeben?

    Ja, gib sie nur einmal aus. Du suchst einen so genannten Gruppenwechsel. Sieht in PHP ungefähr so aus

    $gruppe = null;  
    while ($row = fetch()) {  
      if ($gruppe != $row->gruppe) {  
        if ($gruppe != null) {  
          // alte tabelle schließen  
        }  
        // neue tabelle beginnen  
        $gruppe = $row->gruppe;  
      }  
    }  
    if ($gruppe != null) {  
      // alte tabelle schließen  
    }
    

    echo "$verabschiedung $name";

    1. yo,

      ergänzend noch zu sagen, dass man dazu über die gruppen auch sortieren muss bei der abfrage.

      Ilja