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

Como leer varias filas en esta consulta sql?

Estas en el tema de Como leer varias filas en esta consulta sql? en el foro de Mysql en Foros del Web. tengo una base de datos la cual es esta... que consiste en que los usuarios al igual que aqui en forosdelweb, pueden tener amigos la ...
  #1 (permalink)  
Antiguo 10/11/2012, 23:51
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Como leer varias filas en esta consulta sql?

tengo una base de datos la cual es esta...

que consiste en que los usuarios al igual que aqui en forosdelweb, pueden tener amigos
la tabla amigos
Código HTML:
Ver original
  1. id , Idusuario, idamigo
  2. 1,    281,          280
  3. 2,    281,          279
  4. 3,    280,          279
  5. 4,    280,          281
  6. 5,    279,          280
  7. 6,    279,          281


lo que quiero es que esta sentencia me regrese..
Código SQL:
Ver original
  1. SELECT * FROM usuarios WHERE id=(SELECT idamigo  FROM amigos WHERE amigos.idusuario=281)

los datos de cada idamigo que esta relacionado con el id usuario 281(o el id usuario de session o seleccionado previamente).
lo puse asi por mientras.

osea la subconsulta
Código SQL:
Ver original
  1. (SELECT idamigo  FROM amigos WHERE amigos.idusuario=281)

me regresa los ids que son sus amigos.
pero si la pongo completa asi.

Código MySQL:
Ver original
  1. select * from usuarios where id=(select idamigo  from amigos where amigos.idusuario=281)

el mysql me dice que regresa mas de una linea.. y pues precisamente eso quiero, pero quiero que me permita mostrar esos datos...
sin necesidad de guardar la lista con php y luego hacer un ciclo para hacer una consulta por cada amigo..
mmmm
no hayo como hacerle
de antemano gracias por su ayuda :D
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #2 (permalink)  
Antiguo 11/11/2012, 04:28
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: Como leer varias filas en esta consulta sql?

Cita:
el mysql me dice que regresa mas de una linea.. y pues precisamente eso quiero, pero quiero que me permita mostrar esos datos...
Es que estás haciendo completamente mal la cosa, y tampoco estás entendiendo el mensaje.

Para obtener la lista de usuarios que figuran como amigos necesitas hacer un JOIN, o bien hacer la misma consulta, pero de otro modo.
Primer caso:
Código MySQL:
Ver original
  1. SELECT U.*
  2. FROM usuarios U INNER JOIN amigos A ON U.id= A.idamigo  
  3. WHERE A.idusuario=281

Lo que no estás entendiendo es que no puedes usar el operador "=" para el caso de buscar un valor en el resultado de una subconsulta, si esa subconsulta devuelve más de una línea. El "=" espera que existan dos y sólo dos valores en ese caso (A = B), y no puedes compararlo con un conjunto. Para eso existen otros operadores.
Segundo caso:
Código MySQL:
Ver original
  1. FROM usuarios
  2. WHERE id IN(SELECT idamigo  FROM amigos WHERE amigos.idusuario=281)

¿Se entiende la diferencia?

¿Te acuerdas de la teoría de conjuntos?
Si haces un poco de memoria, en el álgebra de conjuntos (y en toda la matemática) sucede lo mismo: No puedes comparar un valor contra un conjunto, porque son entidades lógicas diferentes.
Bueno los principios aplicados son los mismos.
__________________
¿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 11/11/2012, 09:15
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Como leer varias filas en esta consulta sql?

Cita:

¿Se entiende la diferencia?

¿Te acuerdas de la teoría de conjuntos?
Si haces un poco de memoria, en el álgebra de conjuntos (y en toda la matemática) sucede lo mismo: No puedes comparar un valor contra un conjunto, porque son entidades lógicas diferentes.
Bueno los principios aplicados son los mismos.
muchas gracias, me sirvió mucho, la primera opción, probé la segunda y no funciono, no le busque lo suficiente tal vez.
aun así prefiero tratar de entender la segunda, es que no había usado esa opción.


según la definición, empareja tablas.
aun así tratare de comprender la consulta, por lo menos otra consulta de este tipo ya no batallare tanto..
muchas gracias.
ya tengo eso de amigos, y de eliminar y así.
ahora solo me falta pensar en como agregar un campo o tabla de "solicitud"
crearía una tabla llamada "solicitudes" igualita a esta, o bien solo agrego un campo a la misma ¿verdad?, y si en esa tabla hay una solicitud apuntando al id de la sesión actual, entonces lo mostraría, al darle aceptar, haría la inserción de ese amigo en la tabla amigos y la borraría de la tabla solicitudes, al darle rechazar, solo se borraría de la tabla solicitudes.

tiene logica lo que digo?

posdata nunca pense que hacer eso de relaciones de amistad, en una red social ocupara tantos modulos.,.

por ejemplo
amigos, agregar amigos, cancelar solicitud, solicitudes enviadas, rechazar solicitud, eliminar amigos. y todo solo con una tabla de 3 campos jejes relacionada con la de usuario.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 11/11/2012 a las 13:59

Etiquetas: filas, php, select, sql, 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 11:55.