Listen ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Listen ausgeben

    Hallo,

    ich habe eine mySQL-Tabelle 'People' die folgendermassen aussieht:

    ID | Person | Grupe | Merkmal1 | Merkmal2
    1 | Anton | B | 1 | 3
    2 | Bettina | B | 1 | 2
    3 | Claus | A | 2 | 3

    etc.


    Eine weitere Tabelle 'Merkmale' hat folgende Spalten:

    ID | Merkmal
    1 | ledig
    2 | blond
    3 | Nichtraucher


    Ich möcte nun eine Liste innerhalb eines Formulars erzeugen, in der für eine bestimmte Personengruppe (also alle Personen, die der Gruppe 'B' angehören) sämtliche Merkmale ausgegeben werden:

    Merkmale [v]
    blond (value='2')
    ledig (value='1')
    Nichtraucher (value='3')


    Ich habe es folgendermassen versucht:

    $ergebnisse = mysql_query('SELECT merkmal1, merkmal2 FROM People WHERE gruppe = '$group' GROUP BY merkmal1, merkmal2');

    while($merkmale=mysql_fetch_row($ergebnisse)) {
    $merkmal = mysql_query ('SELECT id, merkmal FROM Merkmale WHERE id = '$merkmale' );
    echo "<option value=\"$merkmal[0]\">$merkmal[1]</option>";
    }

    Hierbei bekomme ich als Listenwerte aber nur '0' und zwar so oft, wie es Personen in der Gruppe B gibt (gemäß dem Beispiel also dreimal).


    Meine Frage ist nun:
    Wie kann ich es erreichen, dass die richtigen Einträge erschinen und diese jeweils nur einmal???

    Gruss und schon mal Dankeschön

    athenaise
    Zuletzt geändert von athenaise; 06.07.2004, 21:18.

  • #2
    Code:
    SELECT DISTINCT merkmal
    FROM merkmale n
    INNER JOIN people p ON p.merkmal1 = m.id OR p.merkmal2 = m.id
    WHERE p.gruppe = 'B'
    so vielleicht?

    aber das design deiner datenbank erscheint mir suboptimal

    was, wenn du mal mehr als zwei merkmale haben willst?

    mach doch lieber eine dritte tabelle mit peolpe_id und merkmal_id
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Re: Listen ausgeben

      Original geschrieben von athenaise

      Wie kann ich es erreichen, dass keine doppelten Einträge vorkommen???
      select distinct ....

      Kommentar

      Lädt...
      X