Eine Sequenz berechnen

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