Supponiamo di avere due tabelle seguenti:LEFT JOIN su Max Valore
STUDENT
studentid lastname firstname
1 Smith John
2 Drew Nancy
STUDENT_STORY
studentid dateline storyid status
1 1328313600 10 2
1 1328313601 9 1
2 1328313602 14 2
2 1328313603 12 1
Ora, ho bisogno di una query SQL che seleziona ogni studente insieme alla più recente storia per quello studente nella tabella storia studente.
Sto provando questo:
SELECT s.*, ss.*
FROM student AS s
LEFT JOIN (
SELECT *
FROM student_story
WHERE student_story.studentid = s.studentid
ORDER BY dateline DESC LIMIT 1
) AS ss ON (ss.studentid = s.studentid)
Tuttavia, questa query non funziona. Si lamenta che s.studentid è un campo sconosciuto nella clausola where della subquery.
Si prega di suggerire come posso ottenere quello che sto cercando di fare.
Grazie.
Ora, quando penso a questo proposito, questo potrebbe restituire lo stesso studente due volte se ci fossero più voci con la stessa data e ora, quindi probabilmente non usare questo. – Detheroc
Questo non dovrebbe mai essere il caso, a meno che qualcosa non sia seriamente sbagliato. Come posso risolvere questa query in modo che non restituisca lo stesso studente due volte se ci sono più voci con lo stesso timestamp? – akanevsky
Se anche gli ID nella tabella student_story aumentano con il tempo, è possibile selezionare e confrontare l'ID massimo. Questo non sembra essere il caso nel tuo esempio, quindi il problema è probabilmente abbastanza complicato. La soluzione di Vyktor non funzionava? Sembra abbastanza ragionevole. – Detheroc