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]