Tengo dos tablas con una cantidad variable de columnas. (No sé cuántas columnas o lo estarán allí nombres), por ejemplo, los cuadros A y B.combinación interna de SQL dos tablas con los mismos nombres de columna
TableA:
ID | B_ID | {variable}
TableB
ID | {variable}
Consulta:
SELECT TableA.*, TableB.* FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;
Cuando TableA y TableB tienen una columna con el mismo nombre, no puedo distinguir entre las dos columnas diferentes. Por ejemplo de ambas tablas tiene la columna "Nombre" esta consulta se traduciría en:
ID | ID | B_ID | NAME | NAME |
1 | 35 | 35 | bob | jim |
Lo que estoy buscando es una forma de diferenciar entre las dos tablas. Preferiblemente con un prefijo para los nombres de columna tales como.
TableA_ID | TableB_ID | TableA_B_ID | TableA_NAME | TableB_NAME |
1 | 35 | 35 | bob | jim |
sé del "AS" palabra clave, pero el problema es que no sé lo que los nombres de las columnas van a ser antes de la mano. (No sé si TableA o TableB van a tener el nombre de columna)
Así que mi pregunta es
¿Cómo diferencias entre las columnas de las dos tablas con un INNER JOIN cuando las tablas pueden tener la los mismos nombres de columna?
Estoy usando SQLite3.
Suena como un tipo de SQL dinámico funky que puede consultar las tablas que se generan en tiempo de ejecución por el usuario. – FrustratedWithFormsDesigner
De acuerdo, si no conoce los nombres de las columnas, hay un problema grave con su diseño. Las sentencias de selección nunca deben usar select *, los nombres de columna siempre se deben especificar, especialmente en join, donde se devuelve la misma columna dos veces, esto supone un desperdicio de recursos del servidor. – HLGEM
Si las tablas se están creando, tienen nombres de columna que se pueden capturar entonces, aunque ... – AllenG