2012-04-01 7 views
5

Simplificaré mi escenario - Tengo estas 2 tablas:¿Cómo se nombran las columnas de selección de comodines en MySQL?

table_A - id int, id_table_B_one int, id_table_B_two int, name varchar(30) 
table_B - id int, name varchar(30), description varchar(30) 

Entonces tengo esta consulta:

SELECT 
table_A.id, table_A.name, table_B_one.*, table_B_two.* 
FROM 
table_A 
LEFT JOIN table_B table_B_one ON table_A.id_table_B_one = table_B.id 
LEFT JOIN table_B table_B_two ON table_A.id_table_B_two = table_B.id 

Mi problema es que voy a tener 3 columnas con los mismos nombres (Identificación y nombre). Sé que puedo usar la palabra clave 'AS' para especificar el alias de una columna. Sin embargo, necesitaría especificar cada columna seleccionada, pero tengo que usar el comodín '*'.

¿Hay alguna forma de cómo se puede establecer el nombre de la columna alias con el comodín "*"? Algo como esto:.

... table_B_one * * AS table_B_one_ ...

+2

¿por qué necesita usar comodines? ¿no puedes simplemente deletrear todas las columnas que quieres ver? – SingleNegationElimination

+0

En lugar de '*' o 'table. *', Es mejor ser explícito sobre las columnas que está seleccionando de todos modos. Listarlos todos en la declaración 'SELECT'. –

+0

TokenMacGuy: Necesito hacerlo, porque la consulta SQL se genera de manera dinámica. Como dije en mi pregunta, esta pregunta es muy simplificada, pero la consulta y su uso en mi caso es mucho más complejo – Frodik

Respuesta

2

No, no es un alias conjunto forma utilizando un comodín. Debes ser explícito.

Si su SQL se genera dinámicamente, el costo (para usted) de ser explícito con todos los alias necesarios es extremadamente pequeño: simplemente coloque la generación de los alias correctos en el código que genera el SQL.

Ser explícito con los alias ayudará a la legibilidad del código, que es lo que los alias están ahí. Sin embargo, tengo curiosidad: ¿por qué quieres alias si tu SQL se genera dinámicamente?

Cuestiones relacionadas