Peter: Spalte herausfinden

Hallo,

Ich habe einen Werte (z.b. 1) in irgendeiner Spalte meiner Datenbank. Nun möchte ich rausfinden in welcher dieser Wert ist...
Kann mir jemand helfen?

  1. Hallo,

    Ich habe einen Werte (z.b. 1) in irgendeiner Spalte meiner Datenbank. Nun möchte ich rausfinden in welcher dieser Wert ist...

    Also erstens ein "SELECT * FROM xyz" und dann mit einer äußeren Schleife durch die Datensätze, mit einer inneren Schleife durch die Feldwerte.
    Syntaktisch ist das vom DB-Produkt abhängig, manche DBs bieten auch Spezialbefehle die performanter sind als der beschriebene Weg.
    So Du nicht viel Erfahrung mit Datenbanken hast, solltest Du den Tabellenaufbau hinterfragen, Deiner Frage liegt entweder eine ungewöhnliche Aufgabe oder ein unorthodoxer Tabellenaufbau zugrunde.
    Gruß
    Viennamade

    1. Also erstens ein "SELECT * FROM xyz" und dann mit einer äußeren Schleife durch die Datensätze, mit einer inneren Schleife durch die Feldwerte.

      Das habe ich nicht ganz verstanden. Was meinst du mit einer äußeren und inneren Schleife?

      1. Also erstens ein "SELECT * FROM xyz" und dann mit einer äußeren Schleife durch die Datensätze, mit einer inneren Schleife durch die Feldwerte.

        Das habe ich nicht ganz verstanden. Was meinst du mit einer äußeren und inneren Schleife?

        Hallo,
        ich meine wenn Deine Datensätze zB. so aussehen:

        Maier, Angelika, Wien
        Huber, Fritz, Salzburg
        Manner, Beate, München

        dann muß eine äußere Schleife den Datensatzzeiger durch die Datensätze ("Maier", "Huber", "Manner") bewegen. Ist der Datensatzzeiger bei "Maier", dann muß die innere Schleife die Felder ("Maier", "Angelika", "Wien") mit dem von Dir gesuchten Wert vergleichen.

        Beste Grüße
        Viennamade

        1. Ja also ich habe es so:

          Spalte 1 | Spalte 2 | Spalte 3
              1    |    0     |    2

          Jetzt möchte ich dass er mir "Spalte 1" ausgibt, wenn ich nach "1" Suche und wenn ich nach "2" suche sollte er "Spalte 3" ausgeben

          1. Ja also ich habe es so:

            Spalte 1 | Spalte 2 | Spalte 3
                1    |    0     |    2

            Jetzt möchte ich dass er mir "Spalte 1" ausgibt, wenn ich nach "1" Suche und wenn ich nach "2" suche sollte er "Spalte 3" ausgeben

            Hallo,
            sorry, aber ich verstehe nicht ganz, ist in deinem Resultset nur ein Datensatz drinnen, oder sind mehrere Datensätze drinnen?

            Gruß
            Viennamade

            1. Spalte 1 | Spalte 2 | Spalte 3
                  1    |    0     |    2

              Genau so sieht die Struktur aus. Ein Datensatz. Mehrere Spalten und eine Reihe...

              1. Spalte 1 | Spalte 2 | Spalte 3
                    1    |    0     |    2

                Genau so sieht die Struktur aus. Ein Datensatz. Mehrere Spalten und eine Reihe...

                Naja, ich denke, eine if/then/else-Abfrage bietet sich an:

                Wenn Spalte 1 == 1
                   ergebnis = "Spalte 1"
                wenn aber Spalte 2 == 1
                   ergebnis = "Spalte 2"
                wenn aber Spalte 3 == 1
                   ergebnis = "Spalte 3"
                ansonsten
                   ergebnis = "keine Spalte stimmt überein"

                Ein syntaktisch korrektes Bespiel findet Du hier:
                http://www.dynamicwebpages.de/php/control-structures.elseif.php
                Gruß
                Viennamade

                1. Naja, ich denke, eine if/then/else-Abfrage bietet sich an:

                  Gut das hatte ich auch schon überlegt. Allerdings ist das bei vielen Spalten recht viel Arbeit. Ich war mir nicht sicher ob es dafür einen Befehl oder eine andere Möglichkeit gibt. Danke auf jeden Fall erstmal...

                  1. Naja, ich denke, eine if/then/else-Abfrage bietet sich an:

                    Gut das hatte ich auch schon überlegt. Allerdings ist das bei vielen Spalten recht viel Arbeit. Ich war mir nicht sicher ob es dafür einen Befehl oder eine andere Möglichkeit gibt. Danke auf jeden Fall erstmal...

                    Hallo,
                    OK, dann bietet sich mysql_fetch_row an, diese Funktion liefert Dir einen Datensatz als Array.
                    Die Zellen dieses Array kannst Du dann mit einer Schleife durchlaufen. Bei Übereinstimmung einer Array-Zelle mit dem gesuchten Wert soll die Schleife verlassen werden.
                    http://www.dynamicwebpages.de/php/function.mysql-fetch-row.php
                    http://www.dynamicwebpages.de/php/control-structures.do.while.php
                    Gruß
                    Viennamade

    2. Hello Viennamade,

      Ich habe einen Werte (z.b. 1) in irgendeiner Spalte meiner Datenbank. Nun möchte ich rausfinden in welcher dieser Wert ist...

      Also erstens ein "SELECT * FROM xyz" und dann mit einer äußeren Schleife durch die Datensätze, mit einer inneren Schleife durch die Feldwerte.

      Aber für diese Schleifen ist doch die Datenbank zuständig. Wieso sollte Peter sich die ganzen Daten redundant ins PHP holen, wenn er doch nur den Datansatz (oder sogar nur dessn ID) benötigt, in dem der gesuchte Wert steckt?

      Select ID, $concatlist from $table where LIST like '%$wert%';

      Ist der gesuchte Wert ein String:
       $fields = Liste aller Stringfelder der Tabelle
       $concatlist = "concat($fields) as LIST"

      Ist der gesuchte Wert ein Numeric:

      $_fields = array der Namen der numerischen Felder

      $fields = implode(",",$_fields);

      Select ID, $fields from $table where
        $_fields[0] = '$wert' or
        $_fields[1] = '$wert' or
        $_fields[2] = '$wert' or
        ...

      So ungefähr müsste man das finden

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hallo Tom!

        Ich habe einen Werte (z.b. 1) in irgendeiner Spalte meiner Datenbank. Nun möchte ich rausfinden in welcher dieser Wert ist...

        Also erstens ein "SELECT * FROM xyz" und dann mit einer äußeren Schleife durch die Datensätze, mit einer inneren Schleife durch die Feldwerte.

        Aber für diese Schleifen ist doch die Datenbank zuständig. Wieso sollte Peter sich die ganzen Daten redundant ins PHP holen,

        ... ... weil ich auch mal antworten wollte und ich durch Deine Verbesserung meiner Antwort doch noch was gelernt habe und diese Redundanzen künftig vermeide:-)

        Danke
        Viennamade

        1. Hello Viennamade,

          Aber für diese Schleifen ist doch die Datenbank zuständig. Wieso sollte Peter sich die ganzen Daten redundant ins PHP holen,

          ... ... weil ich auch mal antworten wollte und ich durch Deine Verbesserung meiner Antwort doch noch was gelernt habe und diese Redundanzen künftig vermeide:-)

          Yo, das ist ja hier auch so gedacht, dass man seine Ideen äussert und Andere dazu auch noch was schreiben und nachher entsteht ein Gesamtkunstwerk. Übrigens ist es für den Fragesteller manchmal wirklich wertvoller, auch andere Denkschritte zu erfahren, die durchaus schon einen Lösungsweg zeigen, aber nicht unbedingt optimal sind. Mich hat das dann schon oft davor bewahrt, es doch noch auf die andere Weise zu versuchen.

          Ich hoffe, Du nimmst mir meinen Einwand dann auch nicht übel? ;-)

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen