"komplexere" mySQL Abfrage

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

  • "komplexere" mySQL Abfrage

    Hallo Leute,

    ich muss eine Abfrage machen, die folgendes Szenario abdeckt:

    Tabelle user

    userID | userName ....

    Tabelle action

    actionID | actionName ....

    Tabelle userHasaction

    entryID | userID | actionID

    Ich muss nun prüfen, ob ein User eine actionID hat, aber dafür eine andere nicht.

    Als Bsp.: Messeeinladung verschickt, aber war _NICHT_ auf Messe.

    Ciao
    Sunman

  • #2
    Re: "komplexere" mySQL Abfrage

    SELECT COUNT(*) FROM userHasaction WHERE user_id = $user_id AND actionID IN (actionid1, actionid2)

    fertig ... selbst wenn du vorher die IDs noch aus der anderen Tabelle rauslesen musst, machst du halt dafür einen einzelnen Query, ist mit Sicherheit schneller als ein JOIN oder ähnliche Spielereien

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      [MySQL 4.1] Mhm...

      Hallo Leute,

      soweit funktionierts auch.
      Problem ist nur, wenn ich das AND `feld` IN ( '2,3' ) nutze, dann liefert er mir auch Ergebnisse, der z.B. nur 2 oder nur 3 in `feld` hat, aber es müssen beide Werte vorhanden sein, geht das irgendwie?

      Ciao
      Sunman

      Kommentar


      • #4
        Re: [MySQL 4.1] Mhm...

        Original geschrieben von Sunman
        soweit funktionierts auch.
        Problem ist nur, wenn ich das AND `feld` IN ( '2,3' ) nutze, dann liefert er mir auch Ergebnisse, der z.B. nur 2 oder nur 3 in `feld` hat, aber es müssen beide Werte vorhanden sein, geht das irgendwie?
        Ich versteh dein Problem nicht...

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Ich muss ermitteln, ob ein user best. ID's besitzt!

          Beispiel:

          User 1: hat 1,2,3
          User 2: hat 1,3

          Jetzt will ich die User haben, der 1 UND 2 hat, also nur User 1, NICHT User 2, verstehst du jetzt?

          Ciao
          Sunman

          Kommentar


          • #6
            Bei der Tabellenstruktur am besten zwei Queries, wenn der index entsprechend gesetzt ist ist das fixer als ein Join

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Das Problem ist, dass das nicht so einfach ist....

              Weil auf die UserDB auch noch gesucht wird, und dort auch nochmal mehrere Ergebnisse auftauchen können. Geht das nicht per AND `feld` IN (...) oder was ähnlichem?

              Ciao
              Sunman

              Kommentar


              • #8
                Original geschrieben von Sunman
                Weil auf die UserDB auch noch gesucht wird, und dort auch nochmal mehrere Ergebnisse auftauchen können. Geht das nicht per AND `feld` IN (...) oder was ähnlichem?
                bitte Code
                Und nein, du kannst in einem Where ohne Join nur einen Datensatz zur gleichen Zeit abfragen, du kannst ohne Join nicht sagen "die beiden Datensätze, wenn der eine so und der andere so"

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  WHERE gesuchtes_feld IN (1, 2) ist shconmal nicht verkehrt

                  Damit findest du User, die mindestens einen der beiden Werte besitzen.

                  Wenn du das zählst (COUNT) und das Ergebnis davon abfragst (COUNT = 2) sollte es passen
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Ich werds mal versuchen.
                    Vielen Dank

                    Henning

                    Kommentar

                    Lädt...
                    X