Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

columna ambigua

Estas en el tema de columna ambigua en el foro de Mysql en Foros del Web. Que tal al realizar la siguiente consulta me sale el error "Column 'idorden' in where clause is ambiguous" , la consulta la realizo de la ...
  #1 (permalink)  
Antiguo 16/07/2013, 10:58
 
Fecha de Ingreso: abril-2009
Mensajes: 100
Antigüedad: 15 años
Puntos: 0
columna ambigua

Que tal al realizar la siguiente consulta me sale el error "Column 'idorden' in where clause is ambiguous", la consulta la realizo de la siguiente manera:
Código MySQL:
Ver original
  1. from  nucleo.ordenes a, nucleo.detalleorden b, nucleo.articulos c
  2. where a.idorden = b.idorden and b.idarticulo = c.idarticulo and idorden = 10;

Si algo esta mal me podrian ayudar porfa.
  #2 (permalink)  
Antiguo 16/07/2013, 11:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: columna ambigua

¿ Y á qué tabla pertenece el campo "IDORDEN" que pones en el WHERE?
Eso es lo que te está diciendo, que hay al menos dos tablas diferentes con ese mismo nombre de campo, y no sabe a cuál te refieres.

Para evitarte confusiones, y hacer consultas más eficientes, no uses la coma para hacer JOINs, usa el JOIN en forma explícita:
Código MySQL:
Ver original
  1. FROM  nucleo.ordenes a INNER JOIN nucleo.detalleorden b ON a.idorden = b.idorden
  2.     INNER JOIN nucleo.articulos c  ON b.idarticulo = c.idarticulo
  3. WHERE a.idorden = 10;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/07/2013, 11:03
 
Fecha de Ingreso: abril-2009
Mensajes: 100
Antigüedad: 15 años
Puntos: 0
Respuesta: columna ambigua

A pues de la tabla ordenes esta el campo de idorden como llave primaria, y en la tabla detalleorden esta la llave foranea del campo idorden en la tabla ordenes
  #4 (permalink)  
Antiguo 16/07/2013, 11:03
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: columna ambigua

Hola sagdec:

Cita:
EDITO: Como siempre gnzsoloyo, pisándonos los talones... Saludos
El mensaje de error creo que es lo suficientemente explícito como pasa saber de qué se trata. El motor de BD NO PUEDE DETERMINAR A QUÉ CAMPO TE REFIERES CUANDO PONES ESTO:

Código:
...
AND idorden = 10;
...
Este campo existe tanto en tu tabla nucleo.ordenes a como en la tabla nucleo.detalleorden b... por lo tanto, tienes qué especificar a qué tabla pertenece. Dado que tienes una condición que iguala estos dos campos, es indistinto si colocas

Código:
...
AND a.idorden = 10;
...

o 

...
AND b.idorden = 10;
...
Finalmente como recomendación, no hagas las uniones entre tablas con el FROM-WHERE... utiliza JOIN's...

En lugar de hacer esto:

Código:
...
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo
...
Has esto:

Código:
...
FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
...
Saludos
Leo.
  #5 (permalink)  
Antiguo 16/07/2013, 11:11
 
Fecha de Ingreso: abril-2009
Mensajes: 100
Antigüedad: 15 años
Puntos: 0
Respuesta: columna ambigua

Gracias por la respuesta y cambiare al uso de JOIN

saludos

Etiquetas: columna, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:58.