Mailinglisten-Archive |
Hallo Andre, Andre Krajnik erdachte folgende Zeilen: > (...) > ICh möchte eine Report erzeugen, welche Software auf bestimmten PCs > installiert ist. Dafür soll für jede Software, die auf einem PC > isntalliert ist ein X gemacht werden. zudem am Zeilenende eine > Summierung. Die Summierung klappt auch, aber von den "X" kommt immer > nur eines pro Zeile. warum? > > select s.Software, > if (t.PC = "anke", "X", "") AS Anke, > if (t.PC = "buchhaltung", "X", "") as Buchhaltung, if (t.PC = > "empfang", "X", "") as Empfang, if (t.PC = "ernaehrung", "X", "") as > Ernaehrung, if (t.PC = "team", 1, "") as Team, > count(*) as Summe > from tsms t INNER join Software s using(swid) Group by Software; > (...) Sollte eine der Spalten NULL-Werte enthalten, so geben Vergleiche mit Ihm ungültige Werte. Also entweder definierst Du die Spalten als NOT NULL mit Default "" oder du fängst den Fall mit z.B. einem verschachtelten, IF(t.PC is NULL,"",t.PC) ab. Deine Gruppierung ist mir ehrlich gesagt auch nicht so ganz klar für die Felder Anke, Buchhaltung etc. ist nicht definiert, wie sie aggregiert werden sollen. Vielleicht solltes Du mit Hilfe einer IF-Funktion je nach Zustand die Werte 1 oder 0 generieren. Dann das je Spalte mit der Sum() Funktion addieren. (Ergibt vermutlich 1 oder 0) und auf die Sum dann Nocheinmal ein IF um die 1 in ein "X" umzusetzen. Also z.B. so ungefähr, ungetestet: IF (SUM(IF (if (t.pc is null,"",t.pc)="anke", 1,0)),"X","") as Anke Es gibt sicherlich auch noch andere Ansätze. mit freundlichen Grüßen, Michael Donning -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive