Kann mysql kreuztabellen?

hallo

ich hab versucht eine kreuztabell abzufragen, leider bekomme ich nur hinweise dass mein sqlstatement falsch ist.

also mit TRANSFORM Count(id)
SELECT id, Count(test)
FROM test
GROUP BY id
PIVOT nr

erhalte ichleider nur fehler, weiß jemand wie das mysql konform geschrieben werden müsste?

danke

mikey

Hallo lamantin,

der gefragte Befehl ist

TRANSFORM Count(id)
SELECT id, Count(test)
FROM test
GROUP BY id
PIVOT nr

ein Access-Befehl. Ein entsprechendes SQL-Statement (in MySQL) existiert nach meine Wissen nicht.

MfG Georg V.

Hi

ich hab versucht eine kreuztabell abzufragen, leider bekomme
ich nur hinweise dass mein sqlstatement falsch ist.

Ich frag mal ganz doof nach: Ich arbeite zwar seit Jahren mit IBM’s DB2 und Microsofts SQL Server, kann mir aber beim besten Willen nicht vorstellen, was eine „Kreuztabelle“ ist… Meinst Du einen View (materialisiert oder nicht) über zwei Tabellen?
Was soll das Stichwort „Pivot“ bei Deinem Query bewirken?

Wenn ich das wüsste, könnte ich Dir vielleicht eine Lösung vorschlagen :smile:

Am besten, Du skizzierst kurz Deine Tabellen und das gewünschte Ergebnis!

Grüße
m4tt3n

Hi!

Ich frag mal ganz doof nach: Ich arbeite zwar seit Jahren mit
IBM’s DB2 und Microsofts SQL Server, kann mir aber beim besten
Willen nicht vorstellen, was eine „Kreuztabelle“ ist

Hier geht’s ins DataWareHousing (das Wort sieht toll aus :wink:

Was soll das Stichwort „Pivot“ bei Deinem Query bewirken?

Aufgliederung der Werte über mehrere Group-Bys inklusive Zwischen- und Endsummen.

Klassisches Beispiel: Abteilung, Verkäufer, Umsatz

Abteilung Verkäufer Umsatz
========= ========= ======
 20.000 
Sport 6.000
 Mayer 5.000
 Huber 1.000
Elektro 11.000
 Schmid 8.000
 Scott Tiger 2.000
 m4tt3n 1.000
Bücher 3.000
 Tomh 3.000

Zuerst die Gesamtsumme, danach je Abteilung eine Zwischensumme und dann noch je Verkäufer die Summen (Frage an UP: Meintest Du sowas?)

Das ist nur mal ein einfaches Beispiel - im Normalfall wird das bis auf jede Dimension runtergebrochen mit mehreren und vor allem verschiedenen Zwischensummen.

Unter Oracle gibt es (bereits seit Oracle8 - und es werden immer mehr) in SQL bereits spezielle DWH-Abfrage-Statements; wie das aber mit MySQL oder SQL-Server oder sonstwas aussieht, kann ich leider nicht sagen.

Das Ganze ist auch in dieser Form oft nicht notwendig, da BI-Tools diese Arbeit in ihre Würfel übernehmen.

Grüße,
Tomh

Hi
vielen Dank für die Erläuterung :smile:

Also Kreuztabelle bezeichnet das Sternschema bei DWH-Applikationen?

Unter Oracle gibt es (bereits seit Oracle8 - und es werden
immer mehr) in SQL bereits spezielle DWH-Abfrage-Statements;
wie das aber mit MySQL oder SQL-Server oder sonstwas aussieht,
kann ich leider nicht sagen.

Bei DB2 könnte man das ganz elegant mit rekursiven Queries und Unions darstellen, wäre machbar. Aber mySQL-Unterstützt sowas nicht.

Das Ganze ist auch in dieser Form oft nicht notwendig, da
BI-Tools diese Arbeit in ihre Würfel übernehmen.

Beim SQL-Server ab 2005 gibt es auch so tolle Tools, allerdings kenne ich mich damit nur in Ansätzen aus…

Grüße
m4tt3n

PS: Warum hab ich denn sowenig verkauf?! :smile:

Hi!

PS: Warum hab ich denn sowenig verkauf?! :smile:

Weil es eine Oracle-Applikation ist und Scott Tiger, der Liebling von Abteilungsleiter Schmid, damit besser umgehen kann :wink:

Grüße,
Tomh