kai: mysql frage

hallo,

ich habe 2 mysql 4.0 tabellen.
in tab 1 stehen user:
USER_ID | NAME | DATA ...
5       | kai  | toll
6       | gabi | supper

in tabelle 2 stehen nun zu jedem user beliebig viele
eigenschaften
USER_ID | EIGEN_ID
5       | 22
5       | 33
6       | 22

jetzt möchte ich mit einer anfrage alle user haben die:
die eigenschaft 22 UND 33 haben ...

ich bekomm das nicht hin und die tabellenstrucktur ist leider fix
gegeben ...
kann mir da einer helfen ?

danke
kai

  1. hi,

    ich habe 2 mysql 4.0 tabellen.
    in tab 1 stehen user:
    USER_ID | NAME | DATA ...
    5       | kai  | toll
    6       | gabi | supper

    in tabelle 2 stehen nun zu jedem user beliebig viele
    eigenschaften
    USER_ID | EIGEN_ID
    5       | 22
    5       | 33
    6       | 22

    also wenn ich mich richtig an den ganzen SQL-Kram erinnere, dann sollte das so gehen:

      
    select t1.NAME from tab1 t1, tab2 t2 where t1.USER_ID=t2.USER_ID and (t2.EIGEN_ID=22 OR t2.EIGEN_ID=33)  
    
    

    oder

      
    select t1.NAME from tab1 t1 left join tab2 t2 on (t1.USER_ID=t2.USER_ID) where (t2.EIGEN_ID=22 OR t2.EIGEN_ID=33)  
    
    

    Gruß,
    Arthur D.

    --
    >> So long, and thanks for all the fish. <<
    1. Hello,

      nope, das sind auch die, auf die nur eine der beiden Nummer zutrifft.

      Diese Dinge sind immer etwas lästig zu lösen, wir hatten da vor ein paar Monaten schonmal eine längere Diskussion zu, es gibt je nach DBMS verschiedene Möglichkeiten das zu machen.
      Erste Frage: Kann 5|33 mehrfach vorkommen oder ist USER_ID+EIGEN_ID eindeutig? Wenn ja, dann könnte eine GROUP BY + HAVING + COUNT-Lösung funktionieren.

      [Ich würds ja gerne mit Subselect machen, aber ich glaub da streikt deine Datenbank]

      SELECT t1.name, t1.user_id
      FROM tab1 t1 INNER JOIN tab2 t2 ON t1.user_id = t2.user_id
      WHERE t2.eigen_id = 22 OR t2.eigen_id = 33
      GROUP BY t1.name, t1.user_id
      HAVING COUNT(*) = 2

      -> wir gucken also, ob wenn wir nach id und Namen zusammenfassen, der Nutzer zwei Treffer hatte.

      MfG
      Rouven

      --
      -------------------
      Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
      1. suppi,

        vielen dank.
        die idee mit dem count hatte ich auch aber ich dachte ich
        würd die sache wieder zu komplie angehen ...

        die typischen wirren gedanken die man nach einem 12h tag so hat.

        vielen dank
        kai

      2. Hi,

        nope, das sind auch die, auf die nur eine der beiden Nummer zutrifft.

        ach ja, das "und" war so groß geschrieben, dass ich es glatt übersehen hab *g

        Gruß,
        Arthur D.

        --
        >> So long, and thanks for all the fish. <<