Bueno, la cosa es relativamente sencilla.
Por lo que dices quieres que la consulta te devuelva todos los registros de las tablas
tt_tabla1 y
tt_tabla2 ordenados y agrupados en función de las fechas que figuran en la tt_tabla1.
Para que la cosa sea rápida y de escritura simple, lo mejor es reconstruir el DATE que se ha perdido al descomponer innecesariamente la fecha en tres campos (digo innecesariamente, porque entre otras cosas de esa forma usas 8 bytes, cuando con un DATE, alcanza y es más controlable).
Bien, la reconstrucción la haremos en una subconsulta:
Código sql:
Ver originalSELECT DATE(CONCAT(`yid`,'-',`mid`,'-',`did`)) FECHA
FROM tt_tabla1;
A esto lo usaremos como tabla de un INNER JOIN con la segunda tabla:
Código sql:
Ver originalSELECT T1.*, T2.*
FROM
(SELECT eid, DATE(CONCAT(`yid`,'-',`mid`,'-',`did`)) FECHA, subtitle, content
FROM tt_tabla1) T1
INNER JOIN
tt_tabla2 T2 ON T1.FECHA = DATE(T2.`date`)
ORDER BY T1.FECHA, T2.id
Esto debería funcionar.
Hay una segunda posibilidad, que debería funcionar igual, con una sintaxis más simple, y es esta:
Código sql:
Ver originalSELECT T1.*, T2.*
FROM
tt_tabla1 T1
INNER JOIN
tt_tabla2 T2 USING(`did`,`mid`,`yid`)
ORDER BY DATE(CONCAT(`yid`,'-',`mid`,'-',`did`)), T2.id
Hay que probar.
Yo personalmente sigo sin entender qué ventaja le vieron a fragmentar la fecha en tres campos...