WHERE über mehrere Einträge ohne JOIN

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

  • WHERE über mehrere Einträge ohne JOIN

    Hi,

    ich habe eine Tabelle mit Kenntnisständen von Usern zu bestimmten Tätigkeiten.

    Also, vereinfacht
    User-ID | Tätigkeit | Antwort

    User-IDs kommen also mehrfach vor, je nach Anzahl der ausgefüllten Tätigkeiten.

    Ich möchte jetzt diese Tabelle durchsuchen lassen, und zwar kann man seine Filterkriterien "zusammenklicken", d.h. Länge und Inhalt der Abfrage ändert sich je nachdem.
    Jedenfalls möchte ich z.B. alle User ausgeben, die mysql UND PHP können (nur ein Beispiel), also die bei Tätigkeit "mysql" Antwort "gut" UND bei Tätigkeit "php" Antwort "sehr gut" haben.

    Ich würde es eigentlich mit JOIN auf dieselbe Tabelle machen, z.B.
    PHP-Code:
    SELECT t1.user FROM tabelle AS t1 LEFT JOIN tabelle AS t2 WHERE 
    (t1.tätigkeit 63 AND t1.answer 328) AND (t2.tätigkeit 64 AND t2.answer 
    341GROUP BY t1.user 
    Da wie gesagt diese Abfragen zusammengeklickt werden und ganz schön lang werden können, ist es nicht praktisch so, ich muss für jedes Kriterium einen neuen Join machen.

    Gibt es einen anderen Weg?

    Vielleicht kommt mir das mit den vielen Joins auch nur so unpraktisch vor. Bin jedenfalls für Ideen dankbar.

    Gruß,
    ministry
    ich glaube

  • #2
    Füge doch alle WHERE-Bedingungen zusammen (wie Du es schon hast) und gruppiere dann auf der UserId + COUNT(). Wenn der Wert von COUNT gleich der Anzahl der Bedingungen ist (HAVING), ...

    Oder geht das so nicht?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hi & danke erstmal,

      genau die Idee hatte ich auch schon, geht auch erstmal, damit ist aber ausgeschlossen, die UNDs durch ODERs zu ersetzen....

      Also, jemanden zu finden der HTML gut UND (php gut ODER mysql gut) kann.

      Oder denke ich jetzt falsch ?
      ich glaube

      Kommentar

      Lädt...
      X