Abfrage von ids in einer n-Tabelle

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

  • Abfrage von ids in einer n-Tabelle

    Hi an alle,
    ich habe da ein Problem wo ich seit 3 Stunden nicht weiterkomme. Ich hoffe ihr könnt mir helfen.

    Ich habe eine SQL abfrage wo ich user nach bestimmten Kriterien filter. Dazu gehört auch eins wo er mir alle user filtert die sich für alle ausgewählten "Interessen" interessieren.

    Die Usertabelle steht in einer m:n Beziehung zu der Interessentabelle.

    Ein beispiel:

    PHP-Code:
    SELECT name FROM user u
    LEFT JOIN interessen i ON i
    .user_id u.id
    WHERE i
    .interessen_id IN (1,2,3,4,5,6
    Diesel Beispiel stellt eine "ODER" Verknüpfung zwischen den enthaltenen IDs dar.

    Ich will da jetzt eine "UND" Verknüpfung. Dh. nur die User die auch wirklich alle Interessen (1,2,3,4,5,6) haben.

    Brauche dringend Hilfe.

    Danke
    [color=red]www.tomus.eu[/color]

  • #2
    Code:
    ....
    WHERE
      i.interessen_id = 1 AND
      i.interessen_id = 2 AND
      i.interessen_id = 3 AND
      i.interessen_id = 4 AND
      i.interessen_id = 5
    wo ich seit 3 Stunden nicht weiterkomme
    ah ... ja ....
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      gesetzten Fall es handelt sich wirklich um die Folge
      1,2,3,4,5,6

      wäre ein between 1 and 6 sinnvoller ansonsten so wie es die @haxe bereits gesagt hat
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        BETWEEN ist nicht via AND verbunden.

        oder du schreibst "id BETWEEN 1 AND 1 AND id BETWEEN 2 AND 2 AND ...."
        aber das halte ich für umständlich
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Wie wär's, wenn du einfach statt deinem LEFT JOIN einen INNER JOIN nimmst?
          Dann musst nicht so viel am Code rumwerkeln

          gruß Flip
          Find Parties?
          Partysuche

          Kommentar


          • #6
            Original geschrieben von Flip7
            Wie wär's, wenn du einfach statt deinem LEFT JOIN einen INNER JOIN nimmst?
            Dann musst nicht so viel am Code rumwerkeln
            Dafür erhälst du auch genau dasselbe Resultat!
            Gruss
            H2O

            Kommentar


            • #7
              Falls Du wirklich ALLE Interessen zurückhaben willst, dann kannst Du auch einfach die vorhandenen Interessen Zählen.

              Also was in der Art:
              PHP-Code:
              SELECT nameCOUNT(interessen.id) AS interessen_anzahl 
                  FROM user 
                  JOIN interessen 
                  ON 
              (user.id=interessen.user_id
                  
              WHERE interessen_anzahl 6
                  GROUP BY interessen
              .id 
              Ich hab jetzt den genauen Count/Group by Synthax nicht im Kopf, aber so müsste es gehen.

              Kommentar

              Lädt...
              X