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

Como hago un join en esta consulta?

Estas en el tema de Como hago un join en esta consulta? en el foro de Mysql en Foros del Web. Hola a todos, entiendo algo de SQL pero lo que no logro dominar son los joins, me gustaria pedir ayuda para despues hacerlo solo en ...
  #1 (permalink)  
Antiguo 22/02/2012, 13:08
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Como hago un join en esta consulta?

Hola a todos, entiendo algo de SQL pero lo que no logro dominar son los joins, me gustaria pedir ayuda para despues hacerlo solo en mis proximas consultas...

Tengo dos tablas, fotos y usuarios. La tabla fotos tiene un campo numerico que dice a que id de usuario pertenece, y la tabla usuarios tiene un id y un nombre de usuario, lo que deseo es hacer un join para vincular el id de la foto y el id del usuario para que la consulta me devuelva el nombre

Estas son mis consultas:

Primero fotos y despues usuarios
Código SQL:
Ver original
  1. "SELECT link_foto_thumb, pertenecea_foto FROM fotos ORDER BY id_foto LIMIT $RegistrosAEmpezar, $RegistrosAMostrar"
  2.  
  3. SELECT nombre_usuario FROM usuarios WHERE fid_usuario ="'.$MostrarFila['pertenecea_foto'].'"'

Estoy usando php, me di cuenta que voy a matar al servidor haciendo esta consulta:

Codigo completo:

Código PHP:
Ver original
  1. $Resultado=mysql_query("SELECT link_foto_thumb, pertenecea_foto FROM fotos ORDER BY id_foto LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$db);
  2.  
  3.  while($MostrarFila=mysql_fetch_array($Resultado)){
  4.  
  5.     $switchUser=mysql_query('SELECT nombre_usuario FROM usuarios WHERE fid_usuario ="'.$MostrarFila['pertenecea_foto'].'"',$db);
  6.        
  7.        
  8.  
  9.  }

El codigo esta por la mitad, porque me di cuenta del error en la mitad no porque no lo se hacer

¿Como seria la consulta para vincular los id de fotos y usuarios y que me devuelva el nombre?

Muchas gracias!! k+!!
__________________
Mi primera web: http://www.mascoteame.com
  #2 (permalink)  
Antiguo 22/02/2012, 13:21
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Como hago un join en esta consulta?

Hola VbOkonly:

Desde mi particular punto de Vista Santa Wikipedia tiene una manera bastante sencilla y entendible de enseñar el uso de los diferentes tipos de JOIN's, checa la liga:

http://es.wikipedia.org/wiki/Join

Saludos
Leo.
  #3 (permalink)  
Antiguo 22/02/2012, 14:38
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Como hago un join en esta consulta?

Hola, lo intente de la siguiente manera y no me funciona ...

Código MySQL:
Ver original
  1. SELECT usuarios.fid_usuario, fotos.link_foto_thumb, fotos.pertenecea_foto FROM fotos, usuario ORDER BY fotos.id_foto WHERE usuarios.fid_usuario = fotos.id_foto LIMIT $RegistrosAEmpezar, $RegistrosAMostrar

la salida me sale algo asi

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\paginador-encuentros.php on line 17

cuando quiero hacer esto

Código PHP:
Ver original
  1. $Resultado=mysql_query("SELECT usuarios.fid_usuario, fotos.link_foto_thumb, fotos.pertenecea_foto FROM fotos, usuario ORDER BY fotos.id_foto DESC WHERE usuarios.fid_usuario = fotos.id_foto LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$db);
  2.  
  3.  while($MostrarFila=mysql_fetch_array($Resultado)){
  4.  
  5.        
  6.        
  7.  
  8.  }

Si bien no muestra nada el while no tendria que saltar el error, es un error de sql, como lo soluciono?
__________________
Mi primera web: http://www.mascoteame.com
  #4 (permalink)  
Antiguo 22/02/2012, 14:47
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Como hago un join en esta consulta?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE usuarios.fid_usuario = fotos.pertenecea_foto LIMIT 0, 5' at line 1

ese es el error mysql
__________________
Mi primera web: http://www.mascoteame.com
  #5 (permalink)  
Antiguo 22/02/2012, 15:00
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Como hago un join en esta consulta?

Código MySQL:
Ver original
  1. SELECT usuarios.fid_usuario, fotos.link_foto_thumb, fotos.pertenecea_foto FROM fotos INNER JOIN usuarios ON fotos.id_foto = usuarios.fid_usuario ORDER BY fotos.id_foto DESC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar

Solucionado, usé inner join :P,
__________________
Mi primera web: http://www.mascoteame.com
  #6 (permalink)  
Antiguo 22/02/2012, 15:06
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Como hago un join en esta consulta?

Where debe ir antes de order by

Sería:

Código MySQL:
Ver original
  1. $Resultado=mysql_query("SELECT usuarios.fid_usuario, fotos.link_foto_thumb, fotos.pertenecea_foto
  2. FROM fotos, usuario
  3. WHERE usuarios.fid_usuario = fotos.id_foto
  4. ORDER BY fotos.id_foto DESC
  5. LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$db)

Pero la manera más correcta es usando inner joins:

Código MySQL:
Ver original
  1. $Resultado=mysql_query("SELECT usuarios.fid_usuario, fotos.link_foto_thumb, fotos.pertenecea_foto
  2. FROM fotos INNER JOIN usuario
  3. ON usuarios.fid_usuario = fotos.id_foto
  4. ORDER BY fotos.id_foto DESC
  5. LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$db)

Saludos

Etiquetas: join, php, query, registros, select, sql, tabla, campos
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 21:28.