Query gesucht
am 13.02.2007 17:09:20 von Guido Schmidt
Hallo,
Gibt es eine elegante Möglichkeit das nachfolgend beschriebene Ergebnis=
=20
mit einer Abfrage zu bekommen:
Tabelle Auktionen
auktions_id | auktionsname
-----------------------------
1 | lilalaunebär
2 | senfgurken
3 | rennleitung
Tabelle Gebote
gebots_id | auktions_id | kdnr | gebot
----------------------------------------
1 | 1 | 37 | 25
2 | 1 | 42 | 28
3 | 2 | 42 | 15
4 | 1 | 37 | 39
5 | 3 | 37 | 45
6 | 3 | 42 | 25
7 | 3 | 42 | 45
8 | 2 | 37 | 12
Ich möchte nun wissen, welche Auktionen der Kunde mit Kundennummer 37 =
gewonnen hat. In dem Beispiel wären dass Auktion lilalaunebär (1) und=
=20
rennleitung (3).
Vielen Dank.
Guido
Re: Query gesucht
am 13.02.2007 18:29:47 von Helmut Chang
Guido Schmidt schrieb:
> Tabelle Auktionen
> auktions_id | auktionsname
> -----------------------------
> 1 | lilalaunebär
> 2 | senfgurken
> 3 | rennleitung
>
>
> Tabelle Gebote
> gebots_id | auktions_id | kdnr | gebot
> ----------------------------------------
> 1 | 1 | 37 | 25
> 2 | 1 | 42 | 28
> 3 | 2 | 42 | 15
> 4 | 1 | 37 | 39
> 5 | 3 | 37 | 45
> 6 | 3 | 42 | 25
> 7 | 3 | 42 | 45
> 8 | 2 | 37 | 12
>
> Ich möchte nun wissen, welche Auktionen der Kunde mit Kundennummer 37
> gewonnen hat. In dem Beispiel wären dass Auktion lilalaunebär (1) und
> rennleitung (3).
Du könntest dein Problem auch so formulieren: Gib mir die Gewinner aller
Auktionen, verwirf aber Auktionen wieder, bei denen der Gewinner nicht
kdnr = 37. Dazu findet man dann:
Die WHERE-Einschränkung zum "Verwerfen" der "überflüssigen" Daten und
den JOIN, damit du den Namen der Auktion erhältst, trau ich dir selber zu.
gruss, heli
Re: Query gesucht
am 13.02.2007 19:09:57 von Guido Schmidt
Helmut Chang schrieb:
Vielen Dank für die Antwort.
Spricht etwas gegen die nachfolgende Konstruktion?
SELECT a.auktions_id, a.auktionsname
FROM auktionen AS a
JOIN gebote AS g
WHERE g.kdnr =3D 37
AND g.kdnr =3D (
SELECT kdnr
FROM gebote AS g2
WHERE g2.auktions_id =3D a.auktions_id
ORDER BY g2.gebot DESC, g2.gebots_id
)
GROUP BY a.auktions_id
Guido