2010-10-07 3 views
9

Actualmente estoy depurando una gran llamada de MySql que une una gran cantidad de tablas que comparten nombres de columna como id, created_at, etc. Empecé a seleccionarlo, pero me preguntaba si había una manera de hacer algo como:Nombre de la tabla de visualización MySQL junto con las columnas

SELECT * AS table.column_name FROM table1 LEFT JOIN etc etc etc... 

En lugar de tener que nombrar individualmente a columnas como:

SELECT table1.`column2' AS 'NAME', table1.`column3` AS ... 

sería sin duda ayudará a acelerar el proceso de depuración si hay una manera de hacerlo.

Gracias.

Editar:

Gracias por las respuestas hasta el momento. No son exactamente lo que estoy buscando y creo que mi pregunta era un poco vago, así que voy a dar un ejemplo:

Suponga que tiene esta configuración en su MySql esquema:

mesa: estudiantes campos: INT id | INT school_id | VARCHAR nombre

mesa: escuelas campos: INT Identificación | INT nombre

estudiantes contiene:

1 | 1 | "John Doe" 

escuelas contiene:

1 | "Imaginary School One" 

Hacer la llamada MySQL "SELECT * FROM LEFT JOIN estudiantes a las escuelas en (students.school_id = schools.id) "rendirá:

id | school_id | name  | id | name 

1 | 1   | "John Doe" | 1 | "Imaginary School One" 

Sabemos ser tter y sabemos que las primeras columnas Id y Name se refieren a la tabla de estudiantes y las Id y Name segundo se refieren a la tabla de escuelas ya que el conjunto de datos es muy pequeño y no ambiguo con su nombre. Sin embargo, si tuviéramos que lidiar con un conjunto de resultados que contuviera múltiples combinaciones y columnas con nombres similares, entonces comenzaría a ser difícil de leer y normalmente tendría que seguirlo siguiendo las uniones. Podríamos empezar a hacer algo así como

SELECT school.name AS 'school_name', etc etc etc... 

Pero eso vuelve increíblemente práctico una vez que comience trata de grandes conjuntos de datos.

Me preguntaba aunque si había una manera de devolver el conjunto de resultados en la que los nombres de columna se vería como esto en su lugar:

students.id | students.school_id | students.name | schools.id | schools.name 

que sería útil para futuras referencias si tengo que hacer algo similar de nuevo .

+0

Gran pregunta. Estoy intentando lo mismo, pero no puedo encontrar una respuesta. :-( –

Respuesta

1

¿Qué sucede si selecciona las tablas en orden y agrega una columna espaciadora con el nombre.

decir

select 'table1', t1.*, 'table2', t2.*, 'table3', t3.* 
... 

Al menos de esa manera usted no tiene que nombrar columnas específicas.

0

quieres decir algo así como?

show tables; 
desc <tablename>; 
0

Si desea devolver también los nombres de tabla junto con los nombres de columna, puede utilizar la función de CONCAT.

Ejemplo:

SELECT CONCAT('tableName', field) FROM tableNAme 

hacernos saber si esto es lo que busca.

+0

Más o menos. He editado la pregunta principal para tratar de explicarlo mejor si ayuda. – Matthew

0

¿Por qué no utilizar la misma notación de punto en lugar de los guiones bajos ambiguos para separar las tablas de los nombres de columna? Simplemente encierre el alias en back-ticks. Por ejemplo:

SELECT students.id `students.id` FROM students; 
Cuestiones relacionadas