2Danke
ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
606
606
EMPFEHLEN
-
Hi Leute,
habe folgendes Problem und glaube das man das sicher mit mySQL lösen kann. Weis aber nicht wie.
Folgende Abfrage:
SELECT system, error, COUNT (error) FROM errTab where test_id = 16
GROUP BY error, system
Ergibt diese Tabelle
system error count(error)
------ ----- ------------
WINXP #1 156
WINXP #2 35
WINXP #3 65
WINXP #4 122
Vista #1 117
Vista #2 45
Vista #3 36
Vista #4 87
WIN7 #1 61
WIN7 #2 19
WIN7 #3 51
WIN7 #4 78
nun möchte ich das ergebnis aber so haben:
system ERR #1 ERR #2 ERR #3 ERR #4 ERR ALL
------ ----- ----- ----- ----- ------------
WINXP 156 35 65 122 378
Vista 117 45 36 87 285
WIN7 61 19 51 78 209
Geht das direkt in mySQL oder nur über den Umweg einer Programmiersprache (Aktuell mach ich das in PHP)
LG NetBu||
-
Kreuztabellen gehen nur klar definiert in Kombination von SUM() und IF()
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT system, SUM(IF(error='#1', 1, 0)) AS `err #1`, SUM(IF(error='#2', 1, 0)) AS `err #2`, SUM(IF(error='#3', 1, 0)) AS `err #3`, SUM(IF(error='#4', 1, 0)) AS `err #4`, COUNT (error) AS `err all` FROM errTab WHERE test_id = 16 GROUP BY system;
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
OK, das is cool. aber in dem Fall muss ich jeden Error definieren. Wenn also ein neuer Error-Eintrag hinzukommt, müsste ich das Query anpassen. Geht das auch dynamisch, das wenn neue Fehlertypen hinzukommen die nicht jedesmal in den queries angepasst werden müssen?
-
Du kannst in PHP die Errors analysieren und dann das SQL entsprechend zusammensetzen
PHP-Code:$sql = "SELECT DISTINCT error FROM errTab ORDER BY error";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
$fields[] = "SUM(IF(error='{$row['error']}', 1, 0)) AS `err #{$row['error']}`, ";
}
$errFiields = implode('', $fields);
$sql = "
SELECT
system,
{$errFields}
COUNT (error) AS `err all`
FROM
errTab
WHERE
test_id = 16
GROUP BY
system;"
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
danke Dir...
wenn ich nun so was will:
error 1 |error 2
OS | date | time | count |date time count
win xp |
Also das die Auswertungen darstellerisch je nach Fehler in einer anderen Spalte stehen.
-
ich versteh nicht, was du willst
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
OK, habe es mit Deiner Lösung und zusätzlich einer Schleife in PHP gelöst...
-
Problem steht immer noch, da ich immer wieder auf diese Problem stosse.
Ich versuche das mal anhand von Beispielen zu erläutern. Vielleicht hat jemand eine coole Lösung die mir noch nicht in den Sinn gekommen ist. Natürlich könnte ich das mit PHP Schleifen lösen. Aber mit mySQL direkt als Query wäre es eleganter.
Die Tabelle sieht so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
id name typ tag wert1 wert2 -------------------------------------- 01 name01 typ1 1 11 21 02 name01 typ2 1 12 22 03 name02 typ1 1 13 23 04 name02 typ2 1 14 24 05 name03 typ1 1 15 25 06 name03 typ2 1 16 26 07 name04 typ1 1 17 27 08 name04 typ2 1 18 28 09 name05 typ1 1 19 29 10 name05 typ2 1 20 30 11 name01 typ1 2 21 31 12 name01 typ2 2 22 32 13 name01 typ3 2 23 33 14 name02 typ1 2 24 34 15 name02 typ2 2 25 35 16 name02 typ3 2 26 36 17 name03 typ1 2 27 37 18 name03 typ2 2 28 38 19 name03 typ3 2 29 39 20 name04 typ1 2 30 40 21 name04 typ2 2 31 41 20 name04 typ3 2 32 42 20 name05 typ1 2 33 43 20 name05 typ2 2 34 44 20 name05 typ3 2 35 45
wen ich nun nach Tag 1 abfrage dann soll das Ergebnis so aussehen:
Code :1 2 3 4 5 6 7 8 9
für tag 1 . typ1 typ2 name01 wert1 wert2 wert1 wert2 ------------------------------------------ name01 11 21 12 22 name02 13 23 14 24 name03 15 25 16 26 name04 17 27 18 28 name05 19 29 20 30
wenn ich aber nach tag 2 abfrage dann soll es so aussehen:
Code :1 2 3 4 5 6 7 8 9
für tag 2 . typ1 typ2 typ2 name01 wert1 wert2 wert1 wert2 wert1 wert2 ----------------------------------------------------------- name01 21 31 22 32 23 33 name02 24 34 25 35 26 36 name03 27 37 28 38 29 39 name04 30 40 31 41 32 42 name05 33 43 34 44 35 45
Kann man das direkt in mySQL lösen oder muss ich zwingend mit einem Schleifenkonstrukt arbeiten. Das Problem ist das es sich hier um riesige Tabellen handelt....
cu s00n
NetBu||
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
das hab ich fast befürchtet, danke für den Hinweis.
-
Hallo Forum,
Ich hatte mal irgend wo eine MySQL funktion gefunden, die eine Pivot Tabelle dynamisch erzeugen kann. Leider dinde ich die nicht mehr und brauche genau das jetzt auch.
mfg
Klaus
-
Gibt es meines Wissens nach nicht. Nicht dynamisch oder nicht rein in MySQL
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Tabelle spaltenweise aus MySQL-Abfrage befüllen lassen
Von airliner im Forum PHPAntworten: 11Letzter Beitrag: 07.12.10, 10:00 -
Ergebnisse einer SQL Query Zeilen anstatt Spaltenweise ausgeben
Von IR-Bastian im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 15.08.07, 14:14 -
[MySql] Exists in Where-Klause - komplexe Abfrage
Von Subwoover im Forum Relationale DatenbanksystemeAntworten: 9Letzter Beitrag: 16.10.06, 14:31 -
Komplexe Abfrage aus mehreren Tabellen (MySQL 5.0)
Von Kipperlenny im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 04.08.06, 01:23 -
[MySQL+PHP] Komplexe Abfrage oder Brett vor dem Kopf?
Von Tim C. im Forum PHPAntworten: 5Letzter Beitrag: 23.03.04, 13:22





Zitieren


Login





