Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Abfrage der Zeilen die in einer Spalte gleich &in einer anderen den Suchbe

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Abfrage der Zeilen die in einer Spalte gleich &in einer anderen den Suchbe

    Hallo,

    ich habe ein Problem mit einer Abfrage. Kurze Beschreibung: Ich habe eine Umfrage gestaltet. MultipleChoise und SingleChoise Antworten sind möglich. Die Fragen der Umfrage stehen in der Tabelle fragen, die Antworten in der Tabelle antworten. Durch eine Spalte antworten.fragen_id werden die Antworten den Fragen zugeordnet. Gespeichert wird nach dem Durcharbeiten des Fragebogens in der Tabelle bearbeitet. Diese Tabelle hat die Spalten: ID, Befragter, FragenID und AntwortenID. Das habe ich so gestaltet damit die Anzahl der Antworten pro Frage nicht begrenzt ist. In der Spalte Befragter beinhaltet eine Zufallszahl (für jeden Befragten eine) Nun zum Problem: Ich möchte alle Befragten anzeigen lassen die die Antworten mit der ID (1 oder 3 oder 7) und (9 oder 12 oder 16) und (20 oder 21 oder 30) haben. (das ist nur ein willkürliches Beispiel) Nun müsste eine Abfrage in etwa so lauten: Select * from bearbeitet where antwortID (x oder x oder x)und (x oder x oder x)... UND befragter immergleich ist. Das Problem ist nun das "immergleich"
    Ich hoffe Ihr versteht was ich suche und könnt mir helfen.
    Danke und Grüsse aus dem Schwarzwald,

    Ulli


  • #2
    Das ist eine Datenbankfrage, keine zum SW-Design. Bite Forenstruktur beachten!

    [MOD: verschoben]
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Dein Stichwort lautet "IN"...

      Code:
      SELECT .. FROM .. WHERE ID IN (3, 5, 7, ...)
      Und es heisst "choice"
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Hallo,

        Danke erstmal für die schnelle Antwort ur leider hilf es mir nicht ganz. Sehe ich das richtig dass das IN (1,2,3) quasi ein = 1 OR 2 OR 3 ersetzt?
        Dann liefert mir ein

        Select * from bearbeitet where benutzer = 88888 AND ID IN (1,2,3)

        [QUOTE=lstegelitz;510864]Dein Stichwort lautet "IN"...
        Code:
        SELECT .. FROM .. WHERE ID IN (3, 5, 7, ...)
        alle Ergebnisse des Benutzers 88888 die bei ID 1,2 oder 3 stehen haben.
        Hier nochmal eine nähere Beschreibung der Tabelle:

        Tabelle bearbeitet
        ID(Auto)----Benutzer(Zufallszahl)--FrageID-----AntwortID
        1...................123..........................1 ..............7
        -----
        2...................123..........................2 ..............8
        ----
        3...................123..........................3 ..............9
        ----
        4...................111..........................1 ..............7
        -----
        5...................111..........................2 ..............8
        -----
        6...................111..........................3 ..............10
        -----
        7...................222..........................1 ..............7
        -----
        8...................222..........................2 ..............11
        -----
        9...................222..........................3 ..............9
        -----

        Nun möchte ich alle Benutzer anzegen die bei AntwortID (7 oder 8 ) UND 9 stehen haben. Das Ergebnis soll in diesem Fall dann Benutzer 123 und 222 sein.
        Kann mir da evtl jemand noch nen guten Tip geben bzw. hat einer eine Idee wie die Ergebnisse besser gespeichert werden können? Wichtig ist nur dass pro Frage ca. bis zu 10 Antwortmöglichkeiten bestehen...
        Hoffe mein Problem ist soweit klar?!
        Grüsse
        Ulli

        Kommentar


        • #5
          Zitat von lumb Beitrag anzeigen
          Nun möchte ich alle Benutzer anzegen ...
          SELECT BENUTZER FROM bearbeitet ...

          Zitat von lumb Beitrag anzeigen
          ... die bei AntwortID (7 oder 8 ) UND 9 stehen haben.
          ... WHERE AntwortID IN (7, 8, 9)

          War das jetzt so schwer, oder ist deine Frage tiefgründiger?

          [EDIT]
          Ups, gerade gemerkt, doch tiefgründiger: AntwortID (7 oder 8 ) UND 9
          Hm, muss ich nochmal drüber nachdenken ...

          Kommentar


          • #6
            Gerne Interessiere ich mich auch für eine andere Idee die Daten zu speichern. Es muss nur funktionieren dass zu jeder Frage mehrere Antworten gegeben werden können und eine Auswertung pro Befragten möglich ist.

            Wer die Umfrage anschauen möchte
            http://www.buschler.de
            (Von mir ist lediglich die Funktion, mit den eingegebenen Fragen, Antworten etc habe ich nichts zu tun)
            Bogen kann auch gerne durchgegangen werden - Daten werden noch nicht erhoben.

            Kommentar


            • #7
              Zitat von lumb Beitrag anzeigen
              Nun möchte ich alle Benutzer anzegen die bei AntwortID (7 oder 8 ) UND 9 stehen haben.
              ...
              Hoffe mein Problem ist soweit klar?!
              Dann musst du mehrere Listen führen, die du gruppierst.
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Kannst Du mir das etwas genauer erklären

                Meine Idee wäre nun eine Lösung im PHP Code. Also alle frage_id s des ersten benutzers abzufragen und wenn die gesuchten dabei sind kommt die benutzer id in ein array und so weiter, dann hätte man am ende ein array mit allen benutzerids die den gesuchten Kriterien entsprechen.
                Wäre da etwas gegen einzuwenden, ist das sehr langsam bei ca 3000 Befragten? (Also etwa 70000 Zeien in der Tabelle)
                Danke

                Kommentar


                • #9
                  Zitat von lumb Beitrag anzeigen
                  Nun möchte ich alle Benutzer anzegen die bei AntwortID (7 oder 8 ) UND 9 stehen haben. Das Ergebnis soll in diesem Fall dann Benutzer 123 und 222 sein.
                  Wir bewegen uns in die falsche Richtung.. eine Abfrage wie
                  Code:
                  SELECT .. FROM .. 
                      WHERE AntwortID IN (7,8) 
                      AND AntwortID IN (9)
                  macht keinen Sinn.. eine AntwortID kann immer nur EINEN Wert annehmen.

                  Nimm die FrageID noch mit in die Abfrage auf, dazu die Liste der gültigen Antworten für die jeweilige Frage...
                  Code:
                  SELECT .. FROM .. 
                      WHERE (FrageID = 1 AND AntwortID IN (1,2,3) )
                      AND (FrageID = 2 AND AntwortID IN (4,5,6) )
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar

                  Lädt...
                  X