Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Abfrage

Einklappen

Neue Werbung 2019

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

  • MySQL Abfrage

    Hallo Zusammen,
    ich stehe gerade etwas auf dem Schlauch.
    Ich habe eine Tabelle mit vielen Spalten. Die Spalten begrenzen sich auf ID (Einzigarte ID), user (Benutzername) und anschließend Spalten mit dem Wert 0 oder 1.
    Die Abfrage soll mir nun alle Spalten ausgeben, die den Wert 1 enthalten (natürlich jeweils auf die ID und den user beschränkt).

    Hättet ihr vielleicht einen Ansatz für mich?
    Danke im Voraus.

    Edit:
    Ich habe eine Tabelle reports.
    In der Tabelle werden jeweils die ID (einzigartig), der Benutzername und anschließend noch einige Spalten (ich nenne jetzt mal z.B. rep_1_1), die nur den Wert 0 oder 1 haben können.
    Als default ist 0 angegeben.
    Meine Abfrage soll jetzt auf den jeweiligen Nutzer bezogen (ID und Benutzername) alle Spalten durchgehen und prüfen, ob der Wert 1 eingetragen ist.
    Sobald dieser Wert vorhanden ist, soll mir die Spalte ausgegeben werden.(Es ist natürlich vorher unbekannt, welche Spalte welchen Wert hat)
    Beispiel:
    Code:
    ID = "1";
    Benutzername = "test1234";
    rep_1_1 = 0; rep_1_2 = 1; rep_1_3 = 0;
    
    Abfrage soll ausgeben (auf den Benutzer test1234 mit der ID 1 bezogen):
    rep_1_2
    Edit2:
    Habe mal eine Test php erstellt und den array einfach mal mit var_dump ausgelesen.
    Code:
    include('assets/include/config.php'); require_once('assets/include/function.php');
    	
    	$sql = "SELECT
    				*
    			FROM
    				reports
    			WHERE 
                    ID = 1
    				AND (`rep_1_1` = 1 OR `rep_1_2` = 1 OR `rep_1_3` = 1 OR `rep_1_4` = 1 OR `rep_1_5` = 1 OR `rep_1_6` = 1 OR `rep_2_1` = 1 OR `rep_2_2` = 1 OR `rep_2_3` = 1 OR `rep_2_4` = 1 OR `rep_2_5` = 1 OR `rep_2_6` = 1 OR `rep_2_7` = 1 OR `rep_2_8` = 1 OR `rep_3_1` = 1 OR `rep_3_2` = 1 OR `rep_3_3` = 1 OR `rep_3_4` = 1 OR `rep_3_5` = 1 OR `rep_3_6` = 1 OR `rep_3_7` = 1 OR `rep_3_8` = 1 OR `rep_3_9` = 1 OR `rep_3_10` = 1 OR `rep_4_1` = 1 OR `rep_4_2` = 1 OR `rep_4_3` = 1 OR `rep_4_4` = 1 OR `rep_4_5` = 1 OR `rep_4_6` = 1 OR `rep_4_7` = 1 OR `rep_4_8` = 1 OR `rep_4_9` = 1 OR `rep_4_10` = 1 OR `rep_4_11` = 1 OR `rep_4_12` = 1 OR `rep_4_13` = 1 OR `rep_4_14` = 1 OR `rep_5_1` = 1 OR `rep_5_2` = 1 OR `rep_5_3` = 1 OR `rep_5_4` = 1 OR `rep_5_5` = 1 OR `rep_5_6` = 1 OR `rep_5_7` = 1 OR `rep_5_8` = 1 OR `rep_5_9` = 1 OR `rep_5_10` = 1 OR `rep_5_11` = 1 OR `rep_5_12` = 1 OR `rep_5_13` = 1 OR `rep_5_14` = 1 OR `rep_5_15` = 1 OR `rep_5_16` = 1 OR `rep_5_17` = 1 OR `rep_5_18` = 1 OR `rep_5_19` = 1 OR `rep_5_20` = 1 OR `rep_5_21` = 1 OR `rep_5_22` = 1 OR `rep_6_1` = 1 OR `rep_6_2` = 1 OR `rep_6_3` = 1 OR `rep_6_4` = 1 OR `rep_6_5` = 1 OR `rep_6_6` = 1 OR `rep_6_7` = 1 OR `rep_6_8` = 1 OR `rep_6_9` = 1 OR `rep_6_10` = 1 OR `rep_6_11` = 1 OR `rep_6_12` = 1 OR `rep_6_13` = 1 OR `rep_6_14` = 1 OR `rep_6_15` = 1 OR `rep_6_16` = 1 OR `rep_6_17` = 1 OR `rep_6_18` = 1 OR `rep_7_1` = 1 OR `rep_7_2` = 1 OR `rep_7_3` = 1 OR `rep_7_4` = 1 OR `rep_7_5` = 1 OR `rep_7_6` = 1 OR `rep_7_7` = 1 OR `rep_7_8` = 1 OR `rep_7_9` = 1 OR `rep_7_10` = 1 OR `rep_7_11` = 1 OR `rep_7_12` = 1 OR `rep_7_13` = 1 OR `rep_7_14` = 1 OR `rep_7_15` = 1 OR `rep_7_16` = 1 OR `rep_8_1` = 1 OR `rep_8_2` = 1 OR `rep_8_3` = 1 OR `rep_8_4` = 1 OR `rep_8_5` = 1 OR `rep_8_6` = 1 OR `rep_8_7` = 1 OR `rep_8_8` = 1 OR `rep_8_9` = 1 OR `rep_8_10` = 1 OR `rep_8_11` = 1 OR `rep_8_12` = 1 OR `rep_8_13` = 1 OR `rep_8_14` = 1 OR `rep_8_15` = 1 OR `rep_8_16` = 1 OR `rep_9_1` = 1 OR `rep_9_2` = 1 OR `rep_9_3` = 1 OR `rep_9_4` = 1 OR `rep_9_5` = 1 OR `rep_9_6` = 1 OR `rep_9_7` = 1 OR `rep_9_8` = 1 OR `rep_9_9` = 1 OR `rep_9_10` = 1 OR `rep_9_11` = 1 OR `rep_9_12` = 1 OR `rep_9_13` = 1 OR `rep_9_14` = 1 OR `rep_9_15` = 1 OR `rep_9_16` = 1 OR `rep_9_17` = 1 OR `rep_9_18` = 1 OR `rep_9_19` = 1 OR `rep_9_20` = 1 OR `rep_10_1` = 1 OR `rep_10_2` = 1 OR `rep_10_3` = 1 OR `rep_10_4` = 1 OR `rep_10_5` = 1 OR `rep_10_6` = 1 OR `rep_10_7` = 1 OR `rep_10_8` = 1 OR `rep_11_1` = 1 OR `rep_11_2` = 1 OR `rep_11_3` = 1 OR `rep_11_4` = 1 OR `rep_11_5` = 1 OR `rep_11_6` = 1 OR `rep_11_7` = 1 OR `rep_11_8` = 1 OR `rep_12_1` = 1 OR `rep_12_2` = 1 OR `rep_12_3` = 1 OR `rep_12_4` = 1 OR `rep_12_5` = 1 OR `rep_12_6` = 1 OR `rep_12_7` = 1 OR `rep_12_8` = 1 OR `rep_12_9` = 1 OR `rep_12_10` = 1)
    		";
    	$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    	$row = mysql_fetch_assoc($result);
    	var_dump($row);
    var_dump($row):
    Code:
    array (size=158)
      'ID' => string '1' (length=1)
      'Benutzername' => string 'brandmeier.fichtl' (length=17)
      'rep_1_1' => string '1' (length=1)
      'rep_1_2' => string '1' (length=1)
      'rep_1_3' => string '1' (length=1)
      'rep_1_4' => string '1' (length=1)
      'rep_1_5' => string '1' (length=1)
      'rep_1_6' => string '1' (length=1)
      'rep_2_1' => string '0' (length=1)
      'rep_2_2' => string '0' (length=1)
      'rep_2_3' => string '0' (length=1)
      'rep_2_4' => string '0' (length=1)
      'rep_2_5' => string '0' (length=1)
      'rep_2_6' => string '0' (length=1)
      'rep_2_7' => string '0' (length=1)
      'rep_2_8' => string '0' (length=1)
      'rep_3_1' => string '0' (length=1)
      'rep_3_2' => string '0' (length=1)
      'rep_3_3' => string '0' (length=1)
      'rep_3_4' => string '0' (length=1)
      'rep_3_5' => string '0' (length=1)
      'rep_3_6' => string '0' (length=1)
      'rep_3_7' => string '0' (length=1)
      'rep_3_8' => string '0' (length=1)
      'rep_3_9' => string '0' (length=1)
      'rep_3_10' => string '0' (length=1)
      'rep_4_1' => string '0' (length=1)
      'rep_4_2' => string '0' (length=1)
      'rep_4_3' => string '0' (length=1)
      'rep_4_4' => string '0' (length=1)
      'rep_4_5' => string '0' (length=1)
      'rep_4_6' => string '0' (length=1)
      'rep_4_7' => string '0' (length=1)
      'rep_4_8' => string '0' (length=1)
      'rep_4_9' => string '0' (length=1)
      'rep_4_10' => string '0' (length=1)
      'rep_4_11' => string '0' (length=1)
      'rep_4_12' => string '0' (length=1)
      'rep_4_13' => string '0' (length=1)
      'rep_4_14' => string '0' (length=1)
      'rep_5_1' => string '0' (length=1)
      'rep_5_2' => string '0' (length=1)
      'rep_5_3' => string '0' (length=1)
      'rep_5_4' => string '0' (length=1)
      'rep_5_5' => string '0' (length=1)
      'rep_5_6' => string '0' (length=1)
      'rep_5_7' => string '0' (length=1)
      'rep_5_8' => string '0' (length=1)
      'rep_5_9' => string '0' (length=1)
      'rep_5_10' => string '0' (length=1)
      'rep_5_11' => string '0' (length=1)
      'rep_5_12' => string '0' (length=1)
      'rep_5_13' => string '0' (length=1)
      'rep_5_14' => string '0' (length=1)
      'rep_5_15' => string '0' (length=1)
      'rep_5_16' => string '0' (length=1)
      'rep_5_17' => string '0' (length=1)
      'rep_5_18' => string '0' (length=1)
      'rep_5_19' => string '0' (length=1)
      'rep_5_20' => string '0' (length=1)
      'rep_5_21' => string '0' (length=1)
      'rep_5_22' => string '0' (length=1)
      'rep_6_1' => string '0' (length=1)
      'rep_6_2' => string '0' (length=1)
      'rep_6_3' => string '0' (length=1)
      'rep_6_4' => string '0' (length=1)
      'rep_6_5' => string '0' (length=1)
      'rep_6_6' => string '0' (length=1)
      'rep_6_7' => string '0' (length=1)
      'rep_6_8' => string '0' (length=1)
      'rep_6_9' => string '0' (length=1)
      'rep_6_10' => string '0' (length=1)
      'rep_6_11' => string '0' (length=1)
      'rep_6_12' => string '0' (length=1)
      'rep_6_13' => string '0' (length=1)
      'rep_6_14' => string '0' (length=1)
      'rep_6_15' => string '0' (length=1)
      'rep_6_16' => string '0' (length=1)
      'rep_6_17' => string '0' (length=1)
      'rep_6_18' => string '0' (length=1)
      'rep_7_1' => string '0' (length=1)
      'rep_7_2' => string '0' (length=1)
      'rep_7_3' => string '0' (length=1)
      'rep_7_4' => string '0' (length=1)
      'rep_7_5' => string '0' (length=1)
      'rep_7_6' => string '0' (length=1)
      'rep_7_7' => string '0' (length=1)
      'rep_7_8' => string '0' (length=1)
      'rep_7_9' => string '0' (length=1)
      'rep_7_10' => string '0' (length=1)
      'rep_7_11' => string '0' (length=1)
      'rep_7_12' => string '0' (length=1)
      'rep_7_13' => string '0' (length=1)
      'rep_7_14' => string '0' (length=1)
      'rep_7_15' => string '0' (length=1)
      'rep_7_16' => string '0' (length=1)
      'rep_8_1' => string '0' (length=1)
      'rep_8_2' => string '0' (length=1)
      'rep_8_3' => string '0' (length=1)
      'rep_8_4' => string '0' (length=1)
      'rep_8_5' => string '0' (length=1)
      'rep_8_6' => string '0' (length=1)
      'rep_8_7' => string '0' (length=1)
      'rep_8_8' => string '0' (length=1)
      'rep_8_9' => string '0' (length=1)
      'rep_8_10' => string '0' (length=1)
      'rep_8_11' => string '0' (length=1)
      'rep_8_12' => string '0' (length=1)
      'rep_8_13' => string '0' (length=1)
      'rep_8_14' => string '0' (length=1)
      'rep_8_15' => string '0' (length=1)
      'rep_8_16' => string '0' (length=1)
      'rep_9_1' => string '0' (length=1)
      'rep_9_2' => string '0' (length=1)
      'rep_9_3' => string '0' (length=1)
      'rep_9_4' => string '0' (length=1)
      'rep_9_5' => string '0' (length=1)
      'rep_9_6' => string '0' (length=1)
      'rep_9_7' => string '0' (length=1)
      'rep_9_8' => string '0' (length=1)
      'rep_9_9' => string '0' (length=1)
      'rep_9_10' => string '0' (length=1)
      'rep_9_11' => string '0' (length=1)
      'rep_9_12' => string '0' (length=1)
      'rep_9_13' => string '0' (length=1)
      'rep_9_14' => string '0' (length=1)
      'rep_9_15' => string '0' (length=1)
      'rep_9_16' => string '0' (length=1)
      more elements...
    Ist es nicht möglich jetzt einfach nach der 1 zu filtern? Wenn ja, hättet ihr einen Ansatz?


  • #2
    Suche bitte mal nach dem Begriff "Normalisierung" und wirf' diese Spalten alle raus.
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Es ist mir bewusst, dass es nicht optimal gelöst ist. Allerdings fällt mir im Moment keine bessere Möglichkeit ein.
      Wenn du eine bessere Möglichkeit kennst, kannst du mir die gerne mitteilen

      Kommentar


      • #4
        Zitat von Keon Beitrag anzeigen
        Es ist mir bewusst, dass es nicht optimal gelöst ist. Allerdings fällt mir im Moment keine bessere Möglichkeit ein.
        Wenn du eine bessere Möglichkeit kennst, kannst du mir die gerne mitteilen
        Normalisierung wurde doch genannt, was willst Du noch wissen?
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ein fortgeschrittener User sollte diesen Begriff eigentlich kennen.
          Standards - Best Practices - AwesomePHP - Guideline für WebApps

          Kommentar


          • #6
            Wieviele Spalten sind das denn insgesamt?

            Kommentar


            • #7
              Zitat von Keon Beitrag anzeigen
              Die Abfrage soll mir nun alle Spalten ausgeben, die den Wert 1 enthalten (natürlich jeweils auf die ID und den user beschränkt).
              Spalten dynamisch zu erzeugen ist nur schwer möglich. Es geht einfacher und wahrscheinlich auch effektiver wenn du das Clientseitig machst.

              Kommentar


              • #8
                Lösungsvorschlag

                Lösungsvorschlag:
                1.) Tabelle optimieren indem du
                all deine Spalten mit rep_.._.. als array in serialisierter form in einer spalte darstellst. -> dann hast du nicht 1000 Spalten in deiner DB und ist übersichtlicher
                Das mal als proivisorische Lösung, wenn du nicht weisst wie du deine Tabelle normalisieren sollst.

                2.) dein Problem Clientseitig lösen:
                -> du holst die Spalte mit all den rep.._.. und machst ein unserialize -> so erhälst du ein Array mit all deinen rep.._..
                -> dann suchst du in deinem Array nach values die den Wert 1 haben

                ODER:
                SELECT * FROM tabelle WHERE '1' in (rep_1_1, rep_1_2, rep_1_3 usw...)

                Kommentar

                Lädt...
                X