Announcement

Collapse
No announcement yet.

Abfrage mit einer Liste

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage mit einer Liste

    Hallo liebes Forum

    Folgende einfache Abfrage bringt mich zum verzweifeln.

    SELECT * FROM TAB WHERE ID IN(1,2,5,8,3,2,2,1)

    Diese Abfrag listet jede vorhandene ID einmal auf. Ich möchte aber ein Resultat mit allen IDs in einer Liste.

    zB
    ID C1 C2 C3
    1
    2
    5
    8
    3
    2
    2
    1

    Ist das möglich?

    Danke für Eure Hilfe

    Bruno

  • #2
    Ich verstehe zwar den Sinn der Abfrage nicht, aber sie sollte das machen, was Du forderst.

    Mit welchem DB System arbeitest Du?
    Ist das die Originalabfrage, die Dich zum Verzweifeln bringt oder eine "vereinfachte" Version fürs Forum?
    Gruß, defo

    Comment


    • #3
      Hallo das läuft auf Mysql, macht Sie eben nicht. Meine Ausgabe ist zB.

      ID C1 C2 C3
      1
      2
      5
      8
      3

      Jede gefundene Entsprechung wird einmal gelistet.

      Comment


      • #4
        Originally posted by bjnas View Post
        Jede gefundene Entsprechung wird einmal gelistet.
        Tja, dann ist wohl deine DB kaputt oder..
        Du hast leider eine meiner Fragen nicht beantwortet. Spekulieren kann ich auch an der Börse.
        Gruß, defo

        Comment


        • #5
          Originally posted by bjnas View Post

          SELECT * FROM TAB WHERE ID IN(1,2,5,8,3,2,2,1)
          Sorry , ja mit dieser Anweisung habe ich schlussendlich getestet.

          Wie soll die DB kaputt sein, alles andere funktioniert ja.

          Comment


          • #6
            Hallo,
            Originally posted by bjnas View Post
            ...Diese Abfrag listet jede vorhandene ID einmal auf. Ich möchte aber ein Resultat mit allen IDs in einer Liste.
            ...
            Ist das möglich?
            Also im Gegensatz zu defo muss ich hier widersprechen. Mit einer einfachen WHERE ... IN Abfrage wirst du jede ID nur einmal bekommen - wenn sie denn nicht mehrfach in der Tabelle steht - egal wieoft du diese in der Abfrageliste wiederholst. Ein WHERE ... IN Konstrukt wird intern wie ein
            [highlight=sql]
            ...
            where ID = 1 OR ID = 2 OR ID = 5 OR ... ID = 2
            [/highlight]behandelt. Wie du hier schnell siehst ist das mehrfache Abfragen gleicher IDs redundant und wird einfach wegoptimiert.
            Wenn du Datensätze "vervielfachen" willst, musst du auch die zugrundeliegende Datenmenge vergrössern. Das kann z.B. durch ein UNION erreicht werden:
            [highlight=sql]
            SELECT * FROM TAB WHERE ID IN(1,2,5,8,3)
            UNION ALL
            SELECT * FROM TAB WHERE ID IN(2,1)
            UNION ALL
            SELECT * FROM TAB WHERE ID IN(2)
            [/highlight]

            Anmerkung: Der Sinn einer solchen Abfrage erschliesst sich mir überhaupt nicht. Ich vermute hier eher einen falschen Ansatz oder ein Verständnisproblem. Vlt. klärst du uns etwas über die Hintergründe auf, um ggfs. Alternativen aufzeigen zu können.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Hii Falk

              Der Sinn der Abfrage ist diese Liste zu erstellen ohne Hilfe von PHP. Es muss auch nicht mit einer IN() Anweisung sein. Gibt es einen anderen Weg?

              Danke

              Bruno

              Comment


              • #8
                Originally posted by Falk Prüfer View Post
                Also im Gegensatz zu defo muss ich hier widersprechen. Mit einer einfachen WHERE ... IN Abfrage wirst du jede ID nur einmal bekommen - wenn sie denn nicht mehrfach in der Tabelle steht - egal wieoft du diese in der Abfrageliste wiederholst. Ein WHERE ... IN Konstrukt wird intern wie ein
                Nun, ich bin nicht auf die Idee gekommen, dass die Datensätze nur einfach (jeweils einmal) in der Tabelle stehen bzw. das IN-Konstrukt die Daten permutieren sollte. Ich habe die IN Einschränkung simpel für eine unscharfe Filterung gehalten.
                Und die DB ist wohl eher nicht kaputt, ich hätte Ironie Tags dazuschreiben sollen. Anlaß waren die spärlichen Informationen zu der Frage.
                Gruß, defo

                Comment


                • #9
                  Originally posted by bjnas View Post
                  ...Gibt es einen anderen Weg?
                  Siehe mein UNION-Beispiel!
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment

                  Working...
                  X