Kreuztablle mit MySQL und oder php

Kreuztablle mit MySQL und oder php

am 30.11.2004 20:21:36 von Peter Frohberg

Hallo,
ich möchte gern eine Kreuztabelle erstellen unb weiß nicht genau, wie

die Ausgangstabelle "kreuz" sie wiefolgt aus:

1950 1990 Area
--------------------
112 120 30
115 132 5
121 321 10
112 120 3

Die Kreuztabelle soll dann so aussehen:


120 132 321
112 33 - -
115 - 5 -
121 - - 10


folgende Syntax hab ich mithilfe der Seite:
http://www.itrain.de/knowhow/sql/tsql/pivot/pivot.asp
herausgefunden:

SELECT 1950,
SUM(CASE 1990 WHEN '120' Then Area ELSE 0 END) As '120',
SUM(CASE 1990 WHEN '132' Then Area ELSE 0 END) As '132',
SUM(CASE 1990 WHEN '321' Then Area ELSE 0 END) As '321'
FROM kreuz

....leider bekomm ich hier nullwerte zurückgeliefert.
Hat jemand eine Idee? wegen mir auch mit php? Eventuell ein
dreidimensionales Array?
mfg
Peter

Re: Kreuztablle mit MySQL und oder php

am 30.11.2004 20:48:28 von Niels Braczek

Peter Frohberg schrieb:

> ich möchte gern eine Kreuztabelle erstellen unb weiß nicht genau, wie
> die Ausgangstabelle "kreuz" sie wiefolgt aus:
>
> 1950 1990 Area
> --------------------
> 112 120 30
> 115 132 5
> 121 321 10
> 112 120 3
>
> Die Kreuztabelle soll dann so aussehen:

Ich habe das mal korrigiert:

> 120 132 321
> 112 33 - -
> 115 - 5 -
> 121 - - 10
>
> folgende Syntax hab ich mithilfe der Seite:
> http://www.itrain.de/knowhow/sql/tsql/pivot/pivot.asp
> herausgefunden:
> [...]
> ...leider bekomm ich hier nullwerte zurückgeliefert.
> Hat jemand eine Idee? wegen mir auch mit php? Eventuell ein
> dreidimensionales Array?

Zweidimensional reicht.

$sqlStr = "SELECT `1950`, `1990`, Area FROM kreuz";
$result = mysql_query($sqlStr) or die($sqlStr.'
'.mysql_error());
$pivot = array();
while ($row=mysql_fetch_assoc($result)) {
@$pivot[$row['1950']][$row['1990']]+= $row['Area'];
}

Die Ausgabe sollte dann keine Probleme mehr bereiten.

MfG
Niels


--
In a world without walls and fences, who needs Windows and Gates?
[Anonym]