Supongamos que tengo los siguientes dos tablas:LEFT JOIN en Valor máximo
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
Ahora, necesito una consulta SQL que seleccione cada estudiante, junto con la historia más reciente para ese estudiante en la tabla de historia de los estudiantes.
Estoy tratando esto:
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)
Sin embargo, esta consulta no funciona. Se queja de que s.studentid es un campo desconocido en la cláusula where de la consulta secundaria.
Por favor sugiera cómo puedo lograr lo que estoy tratando de hacer.
Gracias.
Ahora, cuando pienso en ello, esto podría devolver el mismo estudiante dos veces si había múltiples entradas con la misma marca de tiempo, así que probablemente no uses esto. – Detheroc
Esto nunca debería ser el caso a menos que algo esté muy mal. ¿Cómo arreglo esta consulta para que no devuelva el mismo estudiante dos veces si hay varias entradas con la misma marca de tiempo? – akanevsky
Si también se garantiza que las ID en la tabla student_story van a aumentar con el tiempo, podría seleccionar y comparar la ID máxima. Sin embargo, este no parece ser el caso en su ejemplo, por lo que el problema probablemente sea bastante complicado. ¿La solución de Vyktor no funcionó? Parece bastante razonable. – Detheroc