[MySQL/Joins] Nur Einträge mit der höchsten gemeinsamen ID

WhiZZler

Chancentod²
ID: 85586
L
6 Mai 2006
588
32
begrüße!

ich habe zwei tabellen
polls: title | poll_id
options: option | poll_id | poll_option_id

ich will nur die aktuellste umfrage mit den dazugehörigen optionen auslesen..

Code:
SELECT p.title, p.poll_id, o.option
FROM polls p
LEFT JOIN poll_options o
USING ( poll_id )
ORDER BY poll_id DESC, o.poll_option_id

mit diesem code bekomme ich natürlich alles nach der poll_id geordnet.. LIMIT bringt mir hier auch nicht viel, da die umfragen ja eine unterschiedliche anzahl an antwortmöglichkeiten haben.. das einzige was mir einfällt ist es, LIMIT auf die maximale anzahl der möglichen antwortmöglichkeiten zu setzen.. aber das würde halt in fast allen fällen unnötige datensätze liefern..

geht das überhaupt mit einem query?

danke im vorraus,
mfg
whizzler

p.s: ich hoffe, das war verständlich ;)
 
jup funzt:

Code:
SELECT p.title, p.poll_id, o.option 
FROM (SELECT pollid FROM polls ORDER BY polls DESC LIMIT 1) AS p
LEFT JOIN poll_options AS o USING(poll_id)
ORDER BY o.poll_option_id
 
ah.. ok.. mit nem subquery.. genau genommen zwar immer noch 2 queries, aber immerhin um einiges schöner, als das ganze mit nem zwischenschritt über php..

danke dir ;)
 
Ohne es jetzt auszuprobieren, aber vermutlich müsste auch ein
Code:
WHERE poll_id = MAX(poll_id)
gehen.
 
Das sollte auch gehen:

PHP:
SELECT p.title, p.poll_id, o.option
FROM polls p
LEFT JOIN poll_options o
USING ( poll_id )
WHERE p.poll_id =
( SELECT MAX ( poll_id )
FROM polls )
 
Zuletzt bearbeitet:
Ohne es jetzt auszuprobieren, aber vermutlich müsste auch ein
Code:
WHERE poll_id = MAX(poll_id)
gehen.

Das quitiert dir jedes DBMS mit einem Fehler. Wie soll die DB auch zu einem Ergebnis kommen wenn das Ergebnis vom Ergebnis abhängig ist? :shifty:

PHP:
SELECT p.title, p.poll_id, o.option
FROM polls p
LEFT JOIN poll_options o
USING ( poll_id )
WHERE p.poll_id =
( SELECT MAX ( poll_id )
FROM polls )

Das geht, aber keinesfalls empfehlenswert. Mysql wird für jeden Eintrag in polls den Subquery ausführen. Das was ice-breaker gepostet hat ist bei einem normalisierten Design das Effektivste.
 
Hast Du das vom Ice-breaker ausprobiert ? Ich denke nämlich, dass sein Statement -so wie es da steht- einen Fehler schmeisst

( "title is an unknown column" oder was in der Art )