Eine Sequenz berechnen
am 03.07.2006 09:29:28 von Lambros Rizos
Hallo,
gegeben sei eine Tabelle folgender Struktur:
Jahr Kode Wert
1990 a x
1991 b y
1992 c z
Ich suche eine Moeglichkeit um z.B. fuer das Jahr 1992
folgendes Ergebnis zu erreichen.
Jahr B_Code Wert
1992 abc z
Idealerweise ohne grosse Abhaengigkeiten vom jeweiligen DB-System.
(Auch die Tabelle-Struktur, ist keine heilige Kuh)
Gruss, Lambros
Re: Eine Sequenz berechnen
am 03.07.2006 13:08:22 von Johannes Vogel
Hi Lambros
Lambros Rizos wrote:
[Frage]
Ich hätte mal mit group_concat rumprobiert.
http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.ht ml#id3073278
> Idealerweise ohne grosse Abhaengigkeiten vom jeweiligen DB-System.
> (Auch die Tabelle-Struktur, ist keine heilige Kuh)
Bist du sicher, dass es auf einem Computer laufen soll?
SCNR, Johannes
Re: Eine Sequenz berechnen
am 04.07.2006 08:32:17 von Kai Ruhnau
Lambros Rizos wrote:
> gegeben sei eine Tabelle folgender Struktur:
>
> Jahr Kode Wert
> 1990 a x
> 1991 b y
> 1992 c z
>
> Ich suche eine Moeglichkeit um z.B. fuer das Jahr 1992
> folgendes Ergebnis zu erreichen.
>
> Jahr B_Code Wert
> 1992 abc z
>
> Idealerweise ohne grosse Abhaengigkeiten vom jeweiligen DB-System.
>
> (Auch die Tabelle-Struktur, ist keine heilige Kuh)
Das große Problem daran (und das in jedem Tabellenmodell, das mir gerade
in den Sinn kommt) ist, dass du wahrscheinlich das Zusammengesetzte in
Spalte `B_Code` entsprechend der Jahreszahlen sortiert haben möchtest.
Das ist, ohne sich auf undokumentiertes Verhalten zu verlassen, im
Mengenorientierten SQL nicht möglich.
Eine Variante mit Selfjoin und GROUP_CONCAT beispielsweise könnte dir
gleichberechtigt abc, cba, bca... für 1992 ausgeben.
Auf der anderen Seite sind solche Anforderungen in einer Applikation
fast schon trivial zu erledigen, nachdem man das Resultset vorsortiert hat.
Grüße
Kai
Re: Eine Sequenz berechnen
am 04.07.2006 15:53:41 von Lambros Rizos
>"Kai Ruhnau" schrieb
>
> Lambros Rizos wrote:
> > gegeben sei eine Tabelle folgender Struktur:
> >
> > Jahr Kode Wert
> > 1990 a x
> > 1991 b y
> > 1992 c z
> >
> > Ich suche eine Moeglichkeit um z.B. fuer das Jahr 1992
> > folgendes Ergebnis zu erreichen.
> >
> > Jahr B_Code Wert
> > 1992 abc z
> >
> > Idealerweise ohne grosse Abhaengigkeiten vom jeweiligen DB-System.
> >
> > (Auch die Tabelle-Struktur, ist keine heilige Kuh)
>
> Das große Problem daran (und das in jedem Tabellenmodell, das mir
gerade
> in den Sinn kommt) ist, dass du wahrscheinlich das Zusammengesetzte in
> Spalte `B_Code` entsprechend der Jahreszahlen sortiert haben möchtest.
> Das ist, ohne sich auf undokumentiertes Verhalten zu verlassen, im
> Mengenorientierten SQL nicht möglich.
>
> Eine Variante mit Selfjoin und GROUP_CONCAT beispielsweise könnte dir
> gleichberechtigt abc, cba, bca... für 1992 ausgeben.
>
> Auf der anderen Seite sind solche Anforderungen in einer Applikation
> fast schon trivial zu erledigen, nachdem man das Resultset vorsortiert
hat.
>
> Grüße
> Kai
Ja, die Antwort 'abc' darf nicht iterieren.
SQL soll ja auch nicht fuer alles herhalten, nur schoen waere es,
eine Abfrage-Prozedur und fertig.
Nur, fehlt mir der Ueberblick der sprachlichen Moeglichkeiten.
Gruss, Lambrros