Comunidad de diseño web y desarrollo en internet online

Consulta un poco rebuscada sobre dos tablas... ¿CONCAT?

Citar            
MensajeEscrito el 13 May 2009 01:48 pm
Hola,

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

Por akhasis

75 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 02:31 pm
resuelto: antes del FROM, añadi

, GROUP_CONCAT(nl.language) AS languages

y ya funciona de lujo.

Gracias de nuevo

Por akhasis

75 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.