
Zitat von
YuriPetrova
Hallo,
ich bin neu hier.
ich bin hier gelandet, da ich folgendes problem habe.
in der schule haben wir ein projekt bekommen, bei dem wir einen vertretungsplan erstellen sollen.
wir sind gerade soweit, das man für eine klasse eine woche anzeigen kann.
mein problem ist jetz, dass wenn ich die woche per SELECT anweisung raussuche, kommen die daten untereinander.
meine frage lautet nun, mit welcher anweisung (befehl usw) kann ich die daten wie zb -stunden, klassen, tage- nebeneinander anzeigen?
schonmal vielen dank im vorraus
Leider können wir hier den Aufbau Deiner Tabellen nur erraten. Ich rate mal, Du hast sowas wie:
Code:
test=*# select * from stundenplan ;
tag | stunde | fach
------------+--------+---------
2009-02-23 | 1 | Deutsch
2009-02-23 | 2 | Mathe
2009-02-24 | 1 | Bio
2009-02-24 | 2 | Chemie
(4 rows) Weiterhin rate ich mal, Du suchst eine Ausgabe wie folgt:
Code:
stunde | montag | dienstag
--------+---------+----------
1 | Deutsch | Bio
2 | Mathe | Chemie
(2 rows) Nicht eraten, sondern in der Doku gefunden, habe ich array_accum() als selbst definierte Aggregatfunktion. In einem anderen Thread heute zeigte ich bereits, wo es die gibt. Mit dessen Hilfen bekomme ich das von mir als Dein Wunschresultat erratene hin:
Code:
test=*# select stunde, array_to_string(array_accum(case when extract(dow from tag) = 1 then fach else null end),'') as montag, array_to_string(array_accum(case when extract(dow from tag) = 2 then fach else null end),'') as dienstag from stundenplan group by stunde order by stunde;
stunde | montag | dienstag
--------+---------+----------
1 | Deutsch | Bio
2 | Mathe | Chemie
(2 rows) Andreas, hoffend, richtig geraten zu haben...
Lesezeichen