Problem mit Kreuztabellen
Problem mit Kreuztabellen
am 29.07.2006 21:28:53 von Andre Meiner
Hi.
ich benötige Hilfe bei einer Kreuzabelle.
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;
mysql> describe tsms;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| PC | varchar(12) | YES | | NULL | |
| Software | varchar(50) | YES | | NULL | |
| Version | varchar(20) | YES | | NULL | |
| Size | varchar(12) | YES | | NULL | |
| swid | int(11) | | | 0 | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> describe Software;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Software | varchar(50) | | | | |
| swid | int(11) | | PRI | 0 | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mfg
andre
Re: Problem mit Kreuztabellen
am 30.07.2006 02:27:54 von Thomas Rachel
Andre Meiner wrote:
> Die Summierung klappt auch, aber von den "X" kommt immer
> nur eines pro Zeile. warum?
Weil bei einem GROUP BY in den "anderen" Spalten immer nur ein Wert
steht.
Leider verschweigst Du die Version Deines MySQL-Servers. Hinreichend neue
Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
applikationsseitig auswerten könntest.
(Kann man davon ausgehen, daà das Feld tsms.Software eine Altlast ist?)
Eine weitere Möglichkeit wäre es (allerdings unschön), den Query so zu
formulieren ('' sind portabel, "" MySQL-spezifisch):
select s.Software,
if (anke.swid IS NULL, '', 'X') As Anke,
...
if (team.swid IS NULL, '', 'X') As Team,
count(s.Software) as Summe
from Software s
LEFT JOIN tsms anke ON s.swid=anke.swid AND anke.PC='anke'
... /* zu faul, alles zu tippen */
LEFT JOIN tsms team ON s.swid=team.swid AND team.PC='team'
Group by Software;
Was auf jeden Fall gut wäre, zu normalisieren und aus tsms eine weitere
Tabelle PCs herauszulösen (hätte z.B. Vorteile bei Erweiterung der
Rechnerlandschaft):
mysql> describe tsms;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| PCid | int(11) | YES | | NULL | |
| Software | varchar(50) | YES | | NULL | |
| Version | varchar(20) | YES | | NULL | |
| Size | varchar(12) | YES | | NULL | |
| swid | int(11) | | | 0 | |
+----------+-------------+------+-----+---------+-------+
(warum ist Size eigentlich ein varchar?)
mysql> describe PCs;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| PC | varchar(12) | YES | | NULL | |
| PCid | int(11) | | | 0 | |
+----------+-------------+------+-----+---------+-------+
(12 sind hier knapp - Buchhaltung hat ja schon 11 Zeichen. 15, besser 20
wären sinnvoll.)
Bei PCs.PCid gehört noch ein Auto_Increment hin; ebenso bei
Software.swid.
Dann kannst Du Dir alle Kombinationen nacheinander ausgeben lassen mit
select s.Software, PCs.PC, if (pc.swid IS NULL, '', 'X') as installiert,
from Software s
CROSS JOIN PCs pc
LEFT JOIN tsms ON s.swid=tsms.swid AND pc.PCid=tsms.swid
Order by s.Software, PCs.PC;
somit bekommst Du dann
ein Resultset ähnlich zu
+----------+-------------+-------------+
| Software | PC | installiert |
+----------+-------------+-------------+
| Fibu | Anke | X |
| Fibu | Buchhaltung | X |
| Fibu | Empfang | |
| Fibu | Ernaehrung | |
| Fibu | Team | X |
| Tetris | Anke | X |
| Tetris | Buchhaltung | |
| Tetris | Empfang | |
| Tetris | Ernaehrung | |
| Tetris | Team | X |
+----------+-------------+-------------+
d.h. eine Zeile für jede Software und jeden PC. Diese Zeilen kannst Du
dann applikationsseitig aufdröseln, bspw. als Tabelle darstellen.
HTH,
Thomas
--
Kevin mit der Mami im Zoo vor dem Giraffenkäfig:
- Maaami, ein Haaase!
- Nein, Kevin, dieses ist kein Hase, dieses Tier ist eine Giraffe.
- So ein groosser Haaaase?
Re: Problem mit Kreuztabellen
am 30.07.2006 09:27:56 von dnoeth
Thomas Rachel wrote:
>> Die Summierung klappt auch, aber von den "X" kommt immer
>> nur eines pro Zeile. warum?
>
> Weil bei einem GROUP BY in den "anderen" Spalten immer nur ein Wert
> steht.
Also müssen die "anderen" Spalten aggregiert werden, z.B. mit MAX
> Leider verschweigst Du die Version Deines MySQL-Servers. Hinreichend neue
> Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
> mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
> applikationsseitig auswerten könntest.
Da reicht auch eine Zeile pro PC/Software, das Kombinieren in eine Zeile
macht dann die Applikation, so macht z.B. Excel seine Kreuztabellen.
> Eine weitere Möglichkeit wäre es (allerdings unschön), den Query so zu
> formulieren ('' sind portabel, "" MySQL-spezifisch):
Portabel ist das auch mit '' nicht, da IF kein Standard ist, dafür
gibt's in jedem DBMS CASE:
select s.Software,
max(case when t.PC = "anke" then "X" else "" end) AS Anke,
....
max(case when t.PC = "team" then "X" else "" end) as Team,
count(*) as Summe
from tsms t INNER join Software s using(swid) Group by Software;
> select s.Software, PCs.PC, if (pc.swid IS NULL, '', 'X') as installiert,
> from Software s
> CROSS JOIN PCs pc
> LEFT JOIN tsms ON s.swid=tsms.swid AND pc.PCid=tsms.swid
> Order by s.Software, PCs.PC;
....
> d.h. eine Zeile für jede Software und jeden PC. Diese Zeilen kannst Du
> dann applikationsseitig aufdröseln, bspw. als Tabelle darstellen.
Wenn's die Application macht, brauchst du die Rows für "nicht
installiert" auch wieder nicht :-)
Dieter
Re: Problem mit Kreuztabellen
am 30.07.2006 09:52:22 von Andre Meiner
Thomas Rachel schrieb:
> Andre Meiner wrote:
>
>> Die Summierung klappt auch, aber von den "X" kommt immer
>> nur eines pro Zeile. warum?
>
> Weil bei einem GROUP BY in den "anderen" Spalten immer nur ein Wert
> steht.
>
> Leider verschweigst Du die Version Deines MySQL-Servers. Hinreichend neue
ich habe es hier mit 3.23 und mit dem 5er auf FC5 probiert
> Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
> mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
> applikationsseitig auswerten könntest.
Idealerweise hatte ihc mir vorgestellt, dass ganze direkt in der
Datenbank zu lösen ohne erste einen Wrapper zu schreiben
>
> (Kann man davon ausgehen, daà das Feld tsms.Software eine Altlast ist?)
ich baue die DB gerade erst auf
>
>
> Eine weitere Möglichkeit wäre es (allerdings unschön), den Query so zu
> formulieren ('' sind portabel, "" MySQL-spezifisch):
>
OK
> select s.Software,
> if (anke.swid IS NULL, '', 'X') As Anke,
> ...
> if (team.swid IS NULL, '', 'X') As Team,
> count(s.Software) as Summe
> from Software s
> LEFT JOIN tsms anke ON s.swid=anke.swid AND anke.PC='anke'
> ... /* zu faul, alles zu tippen */
> LEFT JOIN tsms team ON s.swid=team.swid AND team.PC='team'
> Group by Software;
>
>
> Was auf jeden Fall gut wäre, zu normalisieren und aus tsms eine weitere
> Tabelle PCs herauszulösen (hätte z.B. Vorteile bei Erweiterung der
> Rechnerlandschaft):
habe ich gemacht, aber dann dar nicht mehr vernünftig eingebunden bekommen
>
>
> mysql> describe tsms;
> +----------+-------------+------+-----+---------+-------+
> | Field | Type | Null | Key | Default | Extra |
> +----------+-------------+------+-----+---------+-------+
> | PCid | int(11) | YES | | NULL | |
> | Software | varchar(50) | YES | | NULL | |
> | Version | varchar(20) | YES | | NULL | |
> | Size | varchar(12) | YES | | NULL | |
> | swid | int(11) | | | 0 | |
> +----------+-------------+------+-----+---------+-------+
> (warum ist Size eigentlich ein varchar?)
weil da auch Buchstaben drinstehen können (MS ist ja soooo dooooof)
>
> mysql> describe PCs;
> +----------+-------------+------+-----+---------+-------+
> | Field | Type | Null | Key | Default | Extra |
> +----------+-------------+------+-----+---------+-------+
> | PC | varchar(12) | YES | | NULL | |
> | PCid | int(11) | | | 0 | |
> +----------+-------------+------+-----+---------+-------+
> (12 sind hier knapp - Buchhaltung hat ja schon 11 Zeichen. 15, besser 20
> wären sinnvoll.)
PC ist jeweills der Hostname und der kann bei Windows ja nur 12stellig sein.
>
> Bei PCs.PCid gehört noch ein Auto_Increment hin; ebenso bei
> Software.swid.
Stimmt, habe ich nachgezogen.
>
>
> Dann kannst Du Dir alle Kombinationen nacheinander ausgeben lassen mit
> select s.Software, PCs.PC, if (pc.swid IS NULL, '', 'X') as installiert,
> from Software s
> CROSS JOIN PCs pc
> LEFT JOIN tsms ON s.swid=tsms.swid AND pc.PCid=tsms.swid
> Order by s.Software, PCs.PC;
>
> somit bekommst Du dann
>
> ein Resultset ähnlich zu
>
> +----------+-------------+-------------+
> | Software | PC | installiert |
> +----------+-------------+-------------+
> | Fibu | Anke | X |
> | Fibu | Buchhaltung | X |
> | Fibu | Empfang | |
> | Fibu | Ernaehrung | |
> | Fibu | Team | X |
> | Tetris | Anke | X |
> | Tetris | Buchhaltung | |
> | Tetris | Empfang | |
> | Tetris | Ernaehrung | |
> | Tetris | Team | X |
> +----------+-------------+-------------+
>
> d.h. eine Zeile für jede Software und jeden PC. Diese Zeilen kannst Du
> dann applikationsseitig aufdröseln, bspw. als Tabelle darstellen.
Das war auch kein Problem. Ich möchte für den Report aber das ganze so
haben:
+----------+-------------+-------------+-------------+------ -------+
| Software | Anke | Buchhaltung | Team | Summe |
+----------+-------------+-------------+-------------+------ -------+
| Fibu | X | X | | 2 |
| Tetris | | | X | 1 |
+----------+-------------+-------------+-------------+------ -------+
Und ich bekomme immer nur 1 X je Zeile, wobei die Summe aber richtig ist
>
>
> HTH,
>
> Thomas
mfg
Andre
Re: Problem mit Kreuztabellen
am 30.07.2006 10:03:38 von Andre Meiner
Hi Dieter,
Dieter Noeth schrieb:
> Thomas Rachel wrote:
>
>>> Die Summierung klappt auch, aber von den "X" kommt immer
>>> nur eines pro Zeile. warum?
>>
>> Weil bei einem GROUP BY in den "anderen" Spalten immer nur ein Wert
>> steht.
>
> Also müssen die "anderen" Spalten aggregiert werden, z.B. mit MAX
>
>> Leider verschweigst Du die Version Deines MySQL-Servers. Hinreichend neue
>> Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
>> mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
>> applikationsseitig auswerten könntest.
>
> Da reicht auch eine Zeile pro PC/Software, das Kombinieren in eine Zeile
> macht dann die Applikation, so macht z.B. Excel seine Kreuztabellen.
>
>> Eine weitere Möglichkeit wäre es (allerdings unschön), den Query so zu
>> formulieren ('' sind portabel, "" MySQL-spezifisch):
>
> Portabel ist das auch mit '' nicht, da IF kein Standard ist, dafür
> gibt's in jedem DBMS CASE:
>
wieder was gelernt!
> select s.Software,
> max(case when t.PC = "anke" then "X" else "" end) AS Anke,
> ...
> max(case when t.PC = "team" then "X" else "" end) as Team,
> count(*) as Summe
> from tsms t INNER join Software s using(swid) Group by Software;
Das geht schon deutlich in die richtig Richtung. Allerdings verzählit
sich MySQL in ein paar Zeilen.
>
>> select s.Software, PCs.PC, if (pc.swid IS NULL, '', 'X') as installiert,
>> from Software s
>> CROSS JOIN PCs pc
>> LEFT JOIN tsms ON s.swid=tsms.swid AND pc.PCid=tsms.swid
>> Order by s.Software, PCs.PC;
> ...
>> d.h. eine Zeile für jede Software und jeden PC. Diese Zeilen kannst Du
>> dann applikationsseitig aufdröseln, bspw. als Tabelle darstellen.
>
> Wenn's die Application macht, brauchst du die Rows für "nicht
> installiert" auch wieder nicht :-)
>
> Dieter
Re: Problem mit Kreuztabellen
am 30.07.2006 11:40:16 von dnoeth
Andre Meiner wrote:
>> select s.Software,
>> max(case when t.PC = "anke" then "X" else "" end) AS Anke,
>> ...
>> max(case when t.PC = "team" then "X" else "" end) as Team,
>> count(*) as Summe
>> from tsms t INNER join Software s using(swid) Group by Software;
>
> Das geht schon deutlich in die richtig Richtung. Allerdings verzählit
> sich MySQL in ein paar Zeilen.
Was heisst verzählt?
Hast du nicht vorher geschrieben, dass der Count stimmt?
Dann sollte er hier auch richtig sein, wenn nicht...
Dieter
Re: Problem mit Kreuztabellen
am 30.07.2006 11:43:22 von Andre Meiner
Dieter Noeth schrieb:
> Andre Meiner wrote:
>
>>> select s.Software,
>>> max(case when t.PC = "anke" then "X" else "" end) AS Anke,
>>> ...
>>> max(case when t.PC = "team" then "X" else "" end) as Team,
>>> count(*) as Summe
>>> from tsms t INNER join Software s using(swid) Group by Software;
>>
>> Das geht schon deutlich in die richtig Richtung. Allerdings verzählit
>> sich MySQL in ein paar Zeilen.
>
> Was heisst verzählt?
> Hast du nicht vorher geschrieben, dass der Count stimmt?
> Dann sollte er hier auch richtig sein, wenn nicht...
>
stimmt. Der Count stimmte (möglicherweise auch jetzt noch). Die X sind
auch nun mehrfach pro Zeile vorhanden. Aber in manchen Zeilen weichen
die Anzahl der X von der Zahl bei Summe (also der count) voneinander ab.
> Dieter
Andre
Re: Problem mit Kreuztabellen
am 30.07.2006 11:49:20 von Andre Meiner
Dieter Noeth schrieb:
> Andre Meiner wrote:
>
>>> select s.Software,
>>> max(case when t.PC = "anke" then "X" else "" end) AS Anke,
>>> ...
>>> max(case when t.PC = "team" then "X" else "" end) as Team,
>>> count(*) as Summe
>>> from tsms t INNER join Software s using(swid) Group by Software;
>>
>> Das geht schon deutlich in die richtig Richtung. Allerdings verzählit
>> sich MySQL in ein paar Zeilen.
>
> Was heisst verzählt?
> Hast du nicht vorher geschrieben, dass der Count stimmt?
> Dann sollte er hier auch richtig sein, wenn nicht...
>
> Dieter
Hier ein Beispiel:
+----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
| Software | Anke | Buchhaltung | Empfang | Ernaehrung |
Heldenmann | Laptop | Marketing | Sekretariat | Team | TSMLAB01 | Summe |
+----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
| Ad-aware 6 Personal | | | | | X
| | | | | | 2 |
| Ad-Aware SE Personal | X | | X | X |
| | X | | | | 4 |
+----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
2 rows in set (0.03 sec)
Re: Problem mit Kreuztabellen
am 30.07.2006 11:58:18 von Andre Meiner
Andre Meiner schrieb:
> Dieter Noeth schrieb:
>> Andre Meiner wrote:
>>
>>>> select s.Software,
>>>> max(case when t.PC = "anke" then "X" else "" end) AS Anke,
>>>> ...
>>>> max(case when t.PC = "team" then "X" else "" end) as Team,
>>>> count(*) as Summe
>>>> from tsms t INNER join Software s using(swid) Group by Software;
>>> Das geht schon deutlich in die richtig Richtung. Allerdings verzählit
>>> sich MySQL in ein paar Zeilen.
>> Was heisst verzählt?
>> Hast du nicht vorher geschrieben, dass der Count stimmt?
>> Dann sollte er hier auch richtig sein, wenn nicht...
>>
>> Dieter
>
> Hier ein Beispiel:
> +----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
> | Software | Anke | Buchhaltung | Empfang | Ernaehrung |
> Heldenmann | Laptop | Marketing | Sekretariat | Team | TSMLAB01 | Summe |
> +----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
> | Ad-aware 6 Personal | | | | | X
> | | | | | | 2 |
> | Ad-Aware SE Personal | X | | X | X |
> | | X | | | | 4 |
> +----------------------+------+-------------+---------+----- -------+------------+--------+-----------+-------------+---- --+----------+-------+
> 2 rows in set (0.03 sec)
ich hab's gefunden:
im Select für eine WKS hatte ich einen Tip-Fehler in der case-Bedingune.
Daher war dort nie ein X
thx
Re: Problem mit Kreuztabellen
am 30.07.2006 12:39:44 von Thomas Rachel
Andre Meiner wrote:
>> Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
>> mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
>> applikationsseitig auswerten könntest.
> Idealerweise hatte ihc mir vorgestellt, dass ganze direkt in der
> Datenbank zu lösen ohne erste einen Wrapper zu schreiben
Das ist aber ungünstig, da Du dieses ganze Fallunterscheidungsgedrösel
entweder hart kodieren muÃt oder aber den Query dynamisch aufgrund einer
vorhergehenden Abfrage aufbauen muÃt.
Also ganz grob: erst die Datenbank fragen "welche PCs gibt es?" und
daraufhin dann eben die Tabellenstruktur aufbauen. Ginge auch, wäre aber
nicht ganz so schön.
> habe ich gemacht, aber dann dar nicht mehr vernünftig eingebunden
> bekommen
das sollte dann schon trotzdem gehen...
>> (warum ist Size eigentlich ein varchar?)
> weil da auch Buchstaben drinstehen können (MS ist ja soooo dooooof)
aha? naja. Verstehe ich nicht, aber wenn es so ist, dann ist varchar
natürlich richtig.
>> (12 sind hier knapp - Buchhaltung hat ja schon 11 Zeichen. 15, besser
>> 20 wären sinnvoll.)
>
> PC ist jeweills der Hostname und der kann bei Windows ja nur 12stellig
> sein.
Ach so.
> Das war auch kein Problem. Ich möchte für den Report aber das ganze so
> haben:
>
> +----------+-------------+-------------+-------------+------ -------+
> | Software | Anke | Buchhaltung | Team | Summe |
> +----------+-------------+-------------+-------------+------ -------+
> | Fibu | X | X | | 2 |
> | Tetris | | | X | 1 |
> +----------+-------------+-------------+-------------+------ -------+
> Und ich bekomme immer nur 1 X je Zeile, wobei die Summe aber richtig
> ist
Wie gesagt, dann ist GROUP_CONCAT das, was Du suchst - aber AFAIR nicht
auf 3.23.
Thomas
Re: Problem mit Kreuztabellen
am 30.07.2006 12:41:44 von Thomas Rachel
Dieter Noeth wrote:
>> Weil bei einem GROUP BY in den "anderen" Spalten immer nur ein Wert
>> steht.
>
> Also müssen die "anderen" Spalten aggregiert werden, z.B. mit MAX
Bin mir nicht sicher, ob MAX() bei dieser Problematik wirklich hilft - er
will ja *alle*.
IMHO: Entweder GROUP_CONCAT oder (well es wirklich auf 3.23 laufen soll)
eben doch mehr Logik applikationsseitig.
> Da reicht auch eine Zeile pro PC/Software, das Kombinieren in eine
> Zeile macht dann die Applikation, so macht z.B. Excel seine
> Kreuztabellen.
Will er ja aber nicht.
> Portabel ist das auch mit '' nicht, da IF kein Standard ist, dafür
> gibt's in jedem DBMS CASE:
Ah, ok.
Thomas
--
"Hallo, Hugo, stell dir vor, ich werde Vater."
"Und warum machst du so ein trauriges Gesicht?"
"Na ja, ich muà es noch meiner Frau erzählen."
Re: Problem mit Kreuztabellen
am 30.07.2006 13:26:51 von Andre Meiner
Thomas Rachel schrieb:
> Andre Meiner wrote:
>
>>> Versionen kennen den Befehl group_concat. Mit diesem wäre es möglich,
>>> mit group_concat(t.PC) eine Liste zurückzugeben, die Du dann
>>> applikationsseitig auswerten könntest.
>
>> Idealerweise hatte ihc mir vorgestellt, dass ganze direkt in der
>> Datenbank zu lösen ohne erste einen Wrapper zu schreiben
>
> Das ist aber ungünstig, da Du dieses ganze Fallunterscheidungsgedrösel
> entweder hart kodieren muÃt oder aber den Query dynamisch aufgrund einer
> vorhergehenden Abfrage aufbauen muÃt.
>
> Also ganz grob: erst die Datenbank fragen "welche PCs gibt es?" und
> daraufhin dann eben die Tabellenstruktur aufbauen. Ginge auch, wäre aber
> nicht ganz so schön.
Schon klar. Ich weiss nur noch nicht, ob dieser Report einmalig ist.
Daher möchte ich mir zunächst die Arbeit sparen. Prinzipiell hast Du
natürlich recht. Dann _muss_ ein Wrapper drum auch wg. der Flexibilität
bezüglich der Anzahl und Namen der PCs.
Wahrscheinlich würde es dann PHP oder Perl.
mfg
Andre
Re: Problem mit Kreuztabellen
am 30.07.2006 14:13:39 von dnoeth
Thomas Rachel wrote:
> Bin mir nicht sicher, ob MAX() bei dieser Problematik wirklich hilft - er
> will ja *alle*.
Glaub mir, es hilft :-)
Das ist der klassiche Weg für einfache Kreuztabellen...
> IMHO: Entweder GROUP_CONCAT oder (well es wirklich auf 3.23 laufen soll)
> eben doch mehr Logik applikationsseitig.
>
>
>> Da reicht auch eine Zeile pro PC/Software, das Kombinieren in eine
>> Zeile macht dann die Applikation, so macht z.B. Excel seine
>> Kreuztabellen.
>
> Will er ja aber nicht.
Ist mir klar, war ja auch nur die Anmerkung auf group_concat und
"applikationsseitig auswerten"
Dieter
Re: Problem mit Kreuztabellen
am 30.07.2006 22:07:47 von Thomas Rachel
Dieter Noeth wrote:
> Thomas Rachel wrote:
>
>> Bin mir nicht sicher, ob MAX() bei dieser Problematik wirklich hilft -
>> er will ja *alle*.
>
> Glaub mir, es hilft :-)
> Das ist der klassiche Weg für einfache Kreuztabellen...
Stimmt, habs grad mal nachempfunden.
Wenn man drüber nachdenkt, ist es sogar logisch :-)
Thomas
--
Sehr witzig Scotty - Und jetzt beam meine Kleidung runter! (unbekannte
Quelle)