2012-04-25 14 views
5

Tengo una consulta de selección en la que me he unido a un par de tablas decir T1 y T2 y ambas tablas tienen un campo denominado ESTADO que No necesito buscar. En la cláusula where, necesito agregar WHERE STATUS=1 y algunas otras condiciones.Cómo evitar "campo ambiguo en consulta" sin agregar Nombre de tabla o Alias ​​de tabla en donde cláusula

Pero de alguna manera simplemente no puedo agregar el nombre de la tabla o el alias de la tabla al campo en la cláusula where, es decir, no puedo usar donde T2.STATUS=1. ¿Hay alguna manera de considerar siempre el STATUS=1 de la cláusula where que es T1.STATUS para que pueda evitar "error de campo ambiguo"?

Aquí es una consulta de ejemplo:

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1 
Left Join T2 on T1.CID=T2.ID 
where STATUS = 1 

En consulta anterior, quiero que el STATUS =1 a decir siempre T2.STATUS

+1

Deje su consulta por favor –

+1

¿Cuál es el problema con el uso de alias? Tratemos de arreglarlo :) – hgulyan

+1

Supongo que su consulta simplificada no contiene el problema. ¿Podrías mostrar la consulta real? –

Respuesta

3

Si por alguna razón no pueden vivir con hacer

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1 
Left Join T2 on T1.CID=T2.ID 
where T2.STATUS = 1 

Entonces supongo que podría

SELECT T1.name, T1.address, T1.phone, T2.title, T2.description 
FROM ( SELECT CID, name, address, phone 
     FROM T1) AS T1 
LEFT JOIN T2 
ON T1.CID=T2.ID 
WHERE STATUS = 1 

Básicamente omita obtener la columna ESTADO de T1. Entonces no puede haber conflicto.

Línea inferior; no hay una forma simple de hacer esto. El más cercano a simple sería tener diferentes nombres de ambas columnas de ESTADO, pero incluso eso parece extremo.

+0

O intente hacer "T1.address, T1.phone, T2.title, T2.description FROM T1" una vista y úselo como si fuera T1 :) – hgulyan

+0

El problema con esto es que la subconsulta es dolorosamente lenta si la parte externa consulta tiene muchos registros. – Dom

Cuestiones relacionadas