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

nose como hacer esta consulta

Estas en el tema de nose como hacer esta consulta en el foro de Mysql en Foros del Web. Buenas Pues como bien dice el titulo nose como conseguir hacer funcionar esta consulta alguien me hecha una mano y me dice que hago mal?? ...
  #1 (permalink)  
Antiguo 18/09/2012, 14:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
nose como hacer esta consulta

Buenas
Pues como bien dice el titulo nose como conseguir hacer funcionar esta consulta alguien me hecha una mano y me dice que hago mal?? pues en otra consulta esto me funciono pero aqui no y nose aque es debido y me gustaría saberlo:
Código MySQL:
Ver original
  1. $registros=mysql_query("select usuarios.nombre,usuarios.imagen,amigos.Estado from usuarios,amigos WHERE usuarios.id != '$id_usuario' and amigos.Estado!='2' ORDER BY id desc ", $conexion)or
  2.  
  3.   die("Problemas en el select:".mysql_error());
y este es el mensaje o error que me sale:
Problemas en el select:Column 'id' in order clause is ambiguous.
Me podeis hechar una mano amigos?? gracias un saludo.
  #2 (permalink)  
Antiguo 18/09/2012, 15:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: nose como hacer esta consulta

Hola edie8:

este error es básico y la descripción es muy clara... me sorprende que tengas que recurrir a un foro para dar con la respuesta.

La columna ID existe tanto en tu tabla usuarios como en tu tabla amigos, por lo tanto la BD NO SABE A CUAL DE LOS DOS TE REFIERES. tienes que especificar el nombre de la tabla a la que pertenece

Código:
....
ORDER BY amigos.id

.....
ORDER BY usuarios.id
Como comentario adicional, NO ESTÁS ESPECIFICANDO POR QUÉ CAMPO O CAMPOS ESTÁN RELACIONADAS TUS DOS TABLAS, por lo tanto, se realizará un producto cartesiano entre las mismas. También es recomendable que en lugar de listar las tablas en el FROM lo hagas con JOIN's:

Código:
en lugar de hacer

FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo

haz esto

FROM tabla1 INNER JOIN tabla2 ON tabla.campo = tabla2.campo
Saludos
Leo.
  #3 (permalink)  
Antiguo 18/09/2012, 15:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: nose como hacer esta consulta

Es verdad tengo el mismo campo id en las dos que tonto soy, vale muchas gracias tambien por la información lo hare como me dijiste con inenr join un saludo, haber si consigo que funcione.
  #4 (permalink)  
Antiguo 19/09/2012, 05:41
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: nose como hacer esta consulta

Hice la consulta tal cual me dijiste y me dan resultados repetidos hasta 5 veces que puede ser que me falle o me falte para la consulta?? esta es la consulta:
$registros=mysql_query("select * from usuarios inner join amigos on usuarios.id != '1' ORDER BY usuarios.id desc ", $conexion)or
die("Problemas en el select:".mysql_error());
while($con=mysql_fetch_array($registros))
{
echo $con['nombre']."<br>";
}
Nose por que me hace ese muestreo de tanto dato si en la base solo hay 3 que puede haberme ocasionado esto, donde tengo el error?? un saludo.
  #5 (permalink)  
Antiguo 19/09/2012, 06:54
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: nose como hacer esta consulta

Código MySQL:
Ver original
  1. FROM usuarios INNER JOIN amigos ON usuarios.id != '1'
  2. ORDER BY usuarios.id DESC

La consulta no tiene sentido, porque con esto le estás diciendo que devuelva todos los usuarios cuyo ID sea diferente de 1, lo que implicaría a todos, menos el primero.
Pero además, como no estás estableciendo la relación que hay entre ambas tablas, es altamente probable que se esté produciéndome un producto cartesiano (todos con todos), del cual sólo se excluyen los registros del primer usuario. Y eso es espantoso.

En todo caso, lo que debería ir es:
Código MySQL:
Ver original
  1. FROM usuarios INNER JOIN amigos ON usuarios.id = amigos.id
  2. where usuarios.id!= '1'
  3. ORDER BY usuarios.id DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 19/09/2012, 15:04
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: nose como hacer esta consulta

Una pregunta con la relacion que se hace es decir con el on usuarios.id=amigos.id la estas relacionando pero esto quiere decir que las dos tienen que tener el id 1,2 etc pero tienen que coincidir o como va esta relacion?? un saludo y gracias.

Etiquetas: nose, registros, select, sql
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 13:01.