MySQL-Abfrage

MySQL-Abfrage

am 11.11.2005 12:07:43 von Tobias Burger

Hallo,

ich habe hier ein kniffliges Problem:

ich habe folgendes Tabellenlayout:

verkaufs_id master_verkaufs_id version_id historisch ...
------------------------------------------------------------ ----
1 1 1 1
2 1 2 1
3 1 3 0
4 4 1 1
5 4 2 1
6 4 3 1
7 4 4 1
8 8 1 0

Es handelt sich hierbei um eine Verkaufstabelle in welcher sich auch die
Daten der Änderungen befinden. Diese werden als historisch markiert und die
versions_id anschließend um eins erhöht, die master_verkaufs_id bleibt
dieselbe.

Beispiel:
Der Datensatz mit der der verkaufs_id 8 wird bearbeitet. Es wird ein neuer
Datensatz mit der master_verkaufs_id von 8 abgelegt und die verions_id wird
um eins erhöht. Gleichzeitig wird das historisch-Flag des Datensatzes mit
der verkaufs_id 8 auf 1 gesetzt.
8 8 1 1
// alter Datensatz
9 8 2 0
// neuer Datensatz

Es kann auch vorkommen, das ein Verkauf (bzw. die Dienstleistung dazu)
abgelaufen ist. Dann wird der Datensatz zum Verkauf mit der höchsten
version_id ebenfalls als historisch markiert.

Nun das Problem:
Ich benötige nun eine Abfrage, welche mir alle Datensätze zurückgibt bei
denen alle Versionen als historisch markiert sind und eine bei denen nur die
letzte verison als nicht historisch markiert ist. Diese soll gruppiert nach
der master_rolverkaufs_id sein.

Beispiel:
Der Datensatz mit der master_rolverkauf_id 4 soll true zurückgeben, da alle
Versionen als historisch markiert sind.
Der Datensatz mit der master_rolverkauf_id 1 soll hingegen false
zurückgeben, da die höchste Version nicht als historisch markiert ist.

Danke
Tobias

Re: MySQL-Abfrage

am 11.11.2005 12:57:16 von Alexander Fleischer

Hallo,

evtl. so:

select master_rolverkauf_id, min(historisch) group by master_rolverkauf_id

?

Allerdings liefert das 0, wenn _irgendeine_ Version nicht als historisch
markiert ist...

Alexander

Tobias Burger schrieb:
>
> Beispiel:
> Der Datensatz mit der master_rolverkauf_id 4 soll true zurückgeben, da alle
> Versionen als historisch markiert sind.
> Der Datensatz mit der master_rolverkauf_id 1 soll hingegen false
> zurückgeben, da die höchste Version nicht als historisch markiert ist.
>
> Danke
> Tobias
>
>

Re: MySQL-Abfrage

am 11.11.2005 14:14:00 von Tobias Burger

Nee, nicht wirklich, oder? Wäre ja viel zu einfach! ;-)
Klappt wunderbar! Danke Alexander!

"Alexander Fleischer" schrieb im Newsbeitrag
news:dl2124$l1c$1@newsserver.rz.tu-ilmenau.de...
> Hallo,
>
> evtl. so:
>
> select master_rolverkauf_id, min(historisch) group by master_rolverkauf_id
>
> ?
>
> Allerdings liefert das 0, wenn _irgendeine_ Version nicht als historisch
> markiert ist...
>
> Alexander
>
> Tobias Burger schrieb:
>>
>> Beispiel:
>> Der Datensatz mit der master_rolverkauf_id 4 soll true zurückgeben, da
>> alle Versionen als historisch markiert sind.
>> Der Datensatz mit der master_rolverkauf_id 1 soll hingegen false
>> zurückgeben, da die höchste Version nicht als historisch markiert ist.
>>
>> Danke
>> Tobias
>>