2010-04-07 12 views
14

me gustaría hacer algo como esto:MySQL SELECT AS - Anexar todos los nombres de campo

SELECT table.id AS prefix_id, table.name AS prefix_name 

... y he añadido el prefijo de forma dinámica a todos los nombres de campo en lugar de seleccionar manualmente todos ellos (es decir SELECT table.* AS prefix_* o algo así)

Espero haberlo descrito con precisión. ¿Alguna idea?

Editar

Para que quede claro, la razón por la que estoy pidiendo es para asegurarse de que mi resultado de la consulta contiene cada columna de cada tabla que llamo incluso si hay nombres de campo duplicados. Por ejemplo, podría tener una tabla con muchos campos, lo que significa que no quiero alias todos los campos manualmente. Además, si 3 tablas tienen un campo llamado name, mi resultado no contendrá tres resultados name; tendrá uno. Quiero evitar la ambigüedad con mis nombres de columna.

+0

Cuál es el propósito de los prefijos? Creo que tengo una idea, pero dependerá del contexto de tu problema. – JohnFx

+0

Si obtengo información de dos tablas y ambas tienen un índice de 'id' y una columna 'nombre', no arrojarán los resultados de ambas tablas. – jay

+0

Editado la pregunta para * con suerte * ser más útil. – jay

Respuesta

0

Cuando hace referencia a los resultados, puede hacer referencia a cada columna mediante tablename.column. Por lo tanto, tiene un prefijo predeterminado que se agrega a cada nombre de columna.

SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name; 
0

puedo imaginar una situación en la que esto podría ser útil si tiene varios modelos de datos en una lista que usted necesita para llenar desde una sola consulta SQL.

Debería ser posible utilizar DESCRIBE o VER COLUMNAS sobre esas tablas antes de la SELECT consulta. De esta forma, conoce todos los nombres de campo para cada tabla. Sin embargo, esto no ayuda con los posibles conflictos de nombres de campos.

No voy a comentar si esta es una buena idea o no. Cada desarrollador debe decidir dónde trazar la línea entre la flexibilidad, la pereza y las buenas prácticas.

0

En mysqli puede utilizar la función de PHP

mysqli_fetch_fields()

para fieldinformations - para que pueda obtener el nombre de tabla de cada Collumn

Cuestiones relacionadas