PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL-Frage


DocEW
2006-02-06, 20:06:52
Hi,

ich hab folgendes Problem: Gegeben ist eine Tabelle "spieler" mit Spielerdaten und eine Tabelle "nation":

spieler: ID, name, nation, wk, geschlecht, ...
nation: ID, kuerzel, pfad zum Fahnenbildchen, ...

Dabei steht "wk" für "Wettkampfklasse" und ist entweder 1 oder 2. Geschlecht ist entweder 'm' oder 'f'.

Ich will eine Liste, die folgendermaßen aussieht:

Nation | m 1 | m 2 | w 1 | w 2
------------------------------
GER | 12 | 5 | 3 | 10
SUI ...

die also anzeigt, für welche Wettkampfklassen die Nationen wie viele Teilnehmer gemeldet haben. "m 1" sind die männlichen Teilnehmer in wk1 usw.

Wie mache ich das mit SQL? Irgendwie raff ich's nicht. :(

Vielen Dank,

DocEW

DocEW
2006-02-06, 20:38:45
Warum geht denn z.B. sowas in der Art nicht:

SELECT
S.nation AS nation, ( SELECT COUNT(*) FROM spieler S2 WHERE S2.nation = N.ID ) anzahl
FROM
spieler S
GROUP BY nation

SgtTynis
2006-02-07, 09:49:29
Probiers mal hiermit:

SELECT S.nation AS Nation,
SUM(CASE WHEN wk=1 AND geschlecht='m' THEN Amount ELSE 0 END) AS m1,
SUM(CASE WHEN wk=2 AND geschlecht='m' THEN Amount ELSE 0 END) AS m2,
SUM(CASE WHEN wk=1 AND geschlecht='w' THEN Amount ELSE 0 END) AS w1,
SUM(CASE WHEN wk=2 AND geschlecht='w' THEN Amount ELSE 0 END) AS w2
FROM spieler S
GROUP BY Nation

DocEW
2006-02-07, 15:19:19
Du bist mein Held! :massa: :D
Wobei ich statt "Amount" einfach "1" genommen habe.