krapfen: Subselect bzw. Inner Join <-> Arraylänge

Beitrag lesen

hi, sorry war übers wochenende ende nicht, deshalb die verspätete antwort. ich schau mir die links alle gleich einzeln an.

In der Zeit meine Frage:

Erstmal danke für Eure Tipps und Hilfestellungen. Mit einer korrelierten Unterabfrage kann man ja im where-teil durch eine zweite abfrage das suchergebnis einschränken. Das ist mir jetzt einwenig klar geworden:-)
Ich habe nun auch mein vorhaben mit Joins einwenig getestet und bin da doch auf eine Hürde gstoßen.

Nämlich:

Tabelle: Auktion
(auktionsid beschreibung ablaufdatum aktiv)
(2, Maus, 2007-05-05, 1)

Tabelle: Gebote
(aktionsid userid gebot)
(2, 111, 50)
(2, 112, 40)
(2, 113, 30)
(2, 114, 20)

Tabelle: user
(userid username)
(111 ursula)

Meine Sorge ist nicht, dass er immer einen Datensatz holen muss, sondern, dass der Datensatz immer gleich lang (Gleichviele Spalten) haben muss,
egal ob in der Tabelle "Gebot" schon ein Gebot abgegeben wurde oder nicht.

Erst hatte ich dies:

select A.beschreibung, B.userid, B.gebot from Auktion AS A LEFT JOIN Gebote AS B on A.auktionsid=B.auktionsid where A.aktiv=1;

Klappt soweit so gut. Meine Arraylänge ist immer 3 Felder lang. Wenn es keine Gebote geben würde, wären für die Spalten B.userid und B.gebot im Datensatz eine "NULL" eingtragen.
Nun habe ich angenommen wir oben 4 Gebote vorliegen. Da fängt schon mein Problem an. Wende ich die Query von oben anwende, erhalte ich unnötig 4 Datensätze als Ergebnis.
Das ganze wollte ich nun optimieren.
Erst habe ich mir überlegt das ganze zu gruppieren, nur kann ich dann nicht nach dem Hochstgebot sortieren:

select A.beschreibung, B.userid, B.gebot from Auktion AS A LEFT JOIN Gebote AS B on A.auktionsid=B.auktionsid where A.aktiv=1 group by A.auktionsid order by B.gebot desc;

Hier habe ich zwar dann nur noch ein Datensatz, aber nicht mehr das Hochstgebot, sondern nur willkürlich ein Gebot vorliegen.
Was mache ich da falsch?

Wenn ich das geklärt habe, will ich in der Query noch die Spalte C.Username holen.