2010-07-12 43 views
8

tengo el siguiente código SQL y que arroja el error de la columna de nombres ambiguos 'id'nombre de la columna ambiguo

select tbl_registration.*, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where id = [PARAM]p_id 

He leído algunos artículos sobre esto, pero no puedo encontrar una solución de trabajo de mi código. Cualquier ayuda muy apreciada.

Respuesta

21

Su cláusula WHERE ID tiene que ser más específico, incluya el nombre de la tabla:

WHERE table.id = [PARAM]p_id 

Si dos cosas comparten el mismo nombre, aquí es donde los pasos ambigüedad en que en este caso varias tablas en SQL. contiene la columna "id".

SQL tiene la inteligencia para eliminar la ambigüedad de los nombres de las columnas si el nombre de la columna es único en el conjunto actual de tablas, por lo tanto, la mayoría de las veces no es necesario prefijar nombres de tabla con nombres de tabla.

+2

personalmente prefiero para especificar qué tabla siempre el campo de procedencia. Esto hace que el mantenimiento sea mucho más fácil, especialmente cuando se trata de consultas complejas de tipos de informes que se unen a diez tablas diferentes. De esa manera sé de dónde vino el campo si es el que me está dando un problema sin tener que buscar la estructura de diez tablas diferentes para descubrir de dónde vino. – HLGEM

6

lo más probable es que más de una tabla tenga una columna llamada id; use un prefijo de tabla en la cláusula where

4

¿Ha intentado prefijar el nombre de la columna id en la cláusula where?

2

Se refiere a "id" en su cláusula where. Debe especificar qué "id" de la tabla debe filtrar.

0

he sustituido el código

select *, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where your_respective_tblname.id = your_respective_tblname.[PARAM]p_id 
Cuestiones relacionadas