tengo dos tablas de este tipo:
/********TABLA NEWS *******/
| id_news | date |
| 1 | 2009-05-12 |
| 2 | 2009-05-13 |
/************************* TABLA NEWS_LANGUAGE *********************************/
| id_lang | rl_news | title | text | language |
| 1 | 1 | Título en español | Texto en español | es |
| 2 | 1 | Título en inglés | Texto en inglés | en |
| 3 | 2 | Título en español | Texto en español | en |
y la siguiente consulta:
Código :
SELECT n.id_news AS id, n.date AS date, nl.title AS title, nl.text AS text, IF(nl.language="es", 1, NULL) AS default_lang FROM news AS n INNER JOIN news_lang AS nl ON n.id_news = nl.rl_news WHERE nl.title !="" GROUP BY n.id_news ORDER BY date DESC, id DESC, default_lang DESC LIMIT 0, 10
En la consulta anterior, pido que me muestre para cada registro su id, activo (1/0), destacado (1/0), fecha, título y texto. Como está agrupado por id_news, sólo me mostrará un título y un texto, aunque en realidad puede haber varios registros de la segunda tabla asociados a cada registro de la primera, uno por cada idioma.
Dado que me interesa que si un registro tiene el título y el texto en el idioma por defecto ("es") sea este el que me muestre, lo ordeno por default_lang DESC, donde default_lang es un campo que contiene 1 si su idioma es "es". Éste sería un resultado para la consulta anterior:
/*************************** RESULTADO DE LA CONSULTA *****************************/
| id | date | title | text | default_lang |
| 1 | 2009-05-12 | Título en español | Texto en español | 1 |
| 2 | 2009-05-13 | Título en inglés | Texto en inglés | 0 |
La duda que tengo es: ¿se puede de alguna manera, con una sola consulta (aunque contenga consultas anidadas) hacer que te devuelva un campo más, en el que se indique qué idiomas existen en la segunda tabla para cada registro de la primera? Algo así:
/*************************************** RESULTADO DESEADO *************************************/
| id | date | title | text | default_lang | languages |
| 1 | 2009-05-12 | Título en español | Texto en español | 1 | es/en |
| 2 | 2009-05-13 | Título en inglés | Texto en inglés | 0 | es |
He intentado hacerlo de varias formas diferentes, concatenando subconsultas, etc, y no consigo nada. ¿Se os ocurre algo?
Gracias por vuestra atención