MySQL Abfrage

11/15/2014 13:22 .Insane#1
Hey E*Pvpers,
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):

Ist es nicht möglich jetzt einfach nach der 1 zu filtern? Wenn ja, hättet ihr einen Ansatz?
11/15/2014 13:40 NotEnoughForYou#2
SELECT * FROM db.Tabelle WHERE spalteMitWert=1

#Edit grad gemerkt, dass ich überlesen habe, dass es mehrere Spalten mit 0 und 1 sind, sry
11/15/2014 13:42 Shawak#3
Code:
select u.username, u.spalte1, u.spalte2, u.spalte3
from users as u
where u.spatle1 = 1
   and u.spalte2 = 1
   and u.spalte3 = 1
11/15/2014 15:31 xinternet#4
kannst du dein problem mal etwas genauer beschreiben?
was hast du vor?

deine frage klingt eigenartig (alle SPALTEN? die 1 haben anzeigen?)


oben hast du ja schonmal 2 ansätze, aber vielleicht kann man dir besser helfen, wenn man dein problem genauer kennt :)

gruß
11/15/2014 17:10 .Insane#5
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
Der Code von Shawak funktioniert leider nicht.

Edit
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):

Ist es nicht möglich jetzt einfach nach der 1 zu filtern? Wenn ja, hättet ihr einen Ansatz?
11/16/2014 15:14 Shawak#6
Du darfst ja auch nicht OR sondern musst AND benutzen, allerdings machst du sowieso schon etwas falsch wenn du so viele werte brauchst..

Du solltest lieber versuchen diese als Flags oder sonst irgendwie zusammen zu fassen.
11/16/2014 17:23 .Insane#7
Mit AND erhalte ich keine Ausgabe.
Was meinst du mit Flags?
11/16/2014 22:13 Shawak#8
[Only registered and activated users can see links. Click Here To Register...]