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

error: clause is ambiguous

Estas en el tema de error: clause is ambiguous en el foro de Mysql en Foros del Web. Hola, tengo la siguiente consulta: $orden="SELECT * FROM direcciones INNER JOIN personas ON direcciones.usu=personas.usu WHERE usu='$usuario'"; Y me pone este error: Column 'usu' in where ...
  #1 (permalink)  
Antiguo 03/08/2011, 13:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
error: clause is ambiguous

Hola, tengo la siguiente consulta:


$orden="SELECT * FROM direcciones INNER JOIN personas ON direcciones.usu=personas.usu WHERE usu='$usuario'";

Y me pone este error:

Column 'usu' in where clause is ambiguous,

El campo usu esta repetido en dos tablas distintas, lo hice así para que se relacionen y les puse clave primaria a ambos campos usu.

Saludos y gracias.
  #2 (permalink)  
Antiguo 03/08/2011, 13:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error: clause is ambiguous

Cita:
El campo usu esta repetido en dos tablas distintas, lo hice así para que se relacionen y les puse clave primaria a ambos campos usu.
Genial. Pero siguen perteneciendo a tablas diferentes, y MySQL no puede saber a cuál tabla te refieres.
La solución es simple: Como estás usando INNER JOIN lo único que tienes que hacer es indicar una de las dos. Por norma se indica la primera de las tablas:
Código MySQL:
Ver original
  1. FROM direcciones d INNER JOIN personas p ON d.usu = p.usu
  2. WHERE d.usu='$usuario'
__________________
¿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 03/08/2011, 13:49
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: error: clause is ambiguous

perdon no entendi que es "d" y "p"
Saludos, y gracias.
  #4 (permalink)  
Antiguo 03/08/2011, 13:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error: clause is ambiguous

Alias.
¿Nunca usaste alias para tablas o columnas? Es una forma de no escribir tanto y cambiar la forma de aparición de los nombres de columnas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/08/2011, 14:06
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: error: clause is ambiguous

ok, me funcionó a la perfección.

hice lo mismo en esta consulta:

$orden="UPDATE direcciones d, personas p SET nombres='$nombre', apellido='$apellido', celular='$celular', telefono='$telefono', email='$email', direccion='$direccion' WHERE d.usu='$usuario'";

Y me modifica las tablas tanto si tienen ese usu u otro.

Saludos y gracias!
  #6 (permalink)  
Antiguo 03/08/2011, 14:08
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: error: clause is ambiguous

Este es el echo de $orden:

UPDATE direcciones d, personas p SET nombres='Sebastián', apellido='Comas', celular='03125612', telefono='1231332', email='[email protected]', direccion='Solano Antuña' WHERE d.usu='seba'
  #7 (permalink)  
Antiguo 03/08/2011, 14:15
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: error: clause is ambiguous

Ya lo resolví, gracias por todo!

el echo sería:

WHERE d.usu='seba' AND p.usu='seba'

Saludos!

Etiquetas: campos, join, select, tabla
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 22:30.