una consulta SQL bastante complicada que podría estar haciendo mucho más difícil de lo que debería ser: Tengo dos tablas:MySql full join (unión) y ordenar en múltiples columnas de fecha
Noticias: newsid, fecha y hora, newstext
foto: pictureid, fecha y hora, imgPath
los dos no están relacionados, lo único que he incorporado en la fecha que la noticia/se ha creado en
SQL hasta ahora:
SELECT * FROM news as n LEFT OUTER JOIN (SELECT count(pictureid), datetime
FROM picture GROUP BY DATE(datetime)) as p ON DATE(n.datetime) = DATE(p.datetime)
UNION
SELECT * FROM news as n RIGHT OUTER JOIN (SELECT count(pictureid),
datetime FROM picture GROUP BY DATE(datetime)) as p ON
DATE(n.datetime) = DATE(p.datetime)
Tengo que usar la unión para simular una combinación externa completa en MySQL. Los resultados:
newsid text datetime count() datetime
1 sometext 2011-01-16 1 2011-01-16
2 moo2 2011-01-19 NULL NULL
3 mooo3 2011-01-19 NULL NULL
NULL NULL NULL 4 2011-01-14
El problema es que, obviamente, termino con dos fechas uno columnas- de noticias y una de las imágenes, esto significa que no puede ordenar por fecha y tiene que ser en el orden correcto! ¿Algunas ideas? ¡Incluso si eso significa reestructurar la base de datos! Necesito que la fecha esté en una sola columna.
La respuesta vino de Serpro El código de trabajo completo es:
SELECT `newsid`, `text`,
CASE
WHEN `datetime` IS NULL
THEN `pdate`
ELSE `datetime`
END
as `datetime`,
`pcount` FROM
(
(SELECT * FROM news as n LEFT OUTER JOIN
(SELECT count(pictureid) as pcount, datetime as pdate FROM picture GROUP BY DATE(datetime)) as p
ON DATE(n.datetime) = DATE(p.pdate) ORDER BY datetime
)
UNION
(SELECT * FROM news as n RIGHT OUTER JOIN
(SELECT count(pictureid) as pcount, datetime as pdate FROM picture GROUP BY DATE(datetime)) as p
ON DATE(n.datetime) = DATE(p.pdate) ORDER BY datetime
)
) as x
ORDER BY datetime
¡Absolutamente increíble! ¡Gracias! Agregué el código de trabajo a mi publicación principal – Charli
De nada :) – SERPRO