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

unir 3 tablas en una consulta sql

Estas en el tema de unir 3 tablas en una consulta sql en el foro de Mysql en Foros del Web. hola amigos como puedo hacer una consulta donde pueda unir 3 tablas anuncios, afiliados y comentarios con en la tabla cada una tiene su respectivo ...
  #1 (permalink)  
Antiguo 05/08/2010, 19:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
unir 3 tablas en una consulta sql

hola amigos
como puedo hacer una consulta donde pueda unir 3 tablas
anuncios, afiliados y comentarios con en la tabla cada una tiene su respectivo id_anuncio, id_afiliado y id_comentario

yo he podido unir 2 de esta manera utilizando un inner join

Código PHP:
SELECT *
FROM anuncios inner join afiliados
WHERE anuncios
.id_afiliado=afiliados.id_afiliado  AND anuncios.namecolnam 
la tabla comentarios tiene id_comentario, id_anuncio, id_afiliado, comentario,respuesta y fecha


como puedo unir la de comentarios la idea es mostrar por medio de un array valla el nombre del anuncio nombre_anuncio y me llame los datos de estas tablas.

gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #2 (permalink)  
Antiguo 05/08/2010, 19:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: unir 3 tablas en una consulta sql

Usa INNER o LEFT o RIGHT JOIN para unir las tres tablas. Así como haces para unir dos nada más.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 05/08/2010, 19:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

abimaelrc gracias pero cual seria la sintaxis correcta me podrias dar un ejemplo
__________________
sitios
www.avisoya.com
www.yavendi.com
  #4 (permalink)  
Antiguo 05/08/2010, 20:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: unir 3 tablas en una consulta sql

Dependiendo de lo que quieras hacer, pequeño ejemplo
tabla1 -> id, fecha
tabla2 -> id, id_tabla1
tabla3 -> id, id_tabla2
tabla4 -> id, id_tabla1
Código MySQL:
Ver original
  1. SELECT t1.* FROM tabla1 t1
  2.     INNER JOIN tabla2 t2 ON t2.id_tabla1 = t1.id
  3.     INNER JOIN tabla3 t3 ON t3.id_tabla2 = t2.id
  4.     INNER JOIN tabla4 t4 ON t4.id_tabla1 = t1.id
  5. WHERE t1.fecha = '2010-08-05'
  6. ORDER BY t1.id
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 05/08/2010, 20:27
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

voy a mirar si lo puedo ajustar gracias, la idea de esta sql es para juntas los datos de una anuncio, del dueño o afiliado y los comentarios hecho al anuncio.
espero me entiendan gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #6 (permalink)  
Antiguo 05/08/2010, 20:52
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: unir 3 tablas en una consulta sql

Hola.

puede hacer esto:

SELECT * FROM
comentarios AS com
JOIN anuncios AS anu ON com.id_anuncio = anu.id_anuncio
JOIN afiliados AS afi ON com.id_afiliado = afi.id_afiliado
ORDER BY com.id_comentario;

Te explico el código, aunque puede ser que sepas algo, pero seré detallado por si alguien que no sabe mucho de SQL llega a ver esta entrada:

Con el "*" estarás seleccionando todos los datos de todas las tablas.
La tabla principal es comentario, ya que esta es la que tiene el id de las demás, por esto es que la llamamos primero.
Luego, con los JOIN llamamos a otra tabla y con el ON le decimos cómo es que deseamos relacionarlas.
Finalmente, ORDER BY se utiliza para indicar el orden en que se mostrarán los datos.


Como comentario, creo que esto tiene más que ver con SQL que con PHP.
  #7 (permalink)  
Antiguo 05/08/2010, 21:03
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

fcopacheco gracias voy a checarlo ya te digo como me fue pero muy buena tu explicación
__________________
sitios
www.avisoya.com
www.yavendi.com
  #8 (permalink)  
Antiguo 05/08/2010, 21:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

fcopacheco y la condiciones where como la coloco ?


WHERE anuncios.id_afiliado=afiliados.id_afiliado AND anuncios.name= colname


colname=$_GET['nombre']


gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #9 (permalink)  
Antiguo 05/08/2010, 21:22
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: unir 3 tablas en una consulta sql

Cualquier WHERE lo puedes poner antes del ORDER BY
  #10 (permalink)  
Antiguo 05/08/2010, 21:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

pero como podria el sql para mostrar mi consulta pues como te digo que por el nombre del anuncio y esta pasa ppor GET
__________________
sitios
www.avisoya.com
www.yavendi.com
  #11 (permalink)  
Antiguo 05/08/2010, 21:31
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: unir 3 tablas en una consulta sql

Debes recibir el GET en una variable, y luego pasar esa variable en el mysql_query()

Código PHP:
<?
//.......
$colname $_GET["nombre"];

$sql"SELECT * FROM comentarios AS com ";
$sql.= " JOIN anuncios AS anu ON com.id_anuncio = anu.id_anuncio ";
$sql.= " JOIN afiliados AS afi ON com.id_afiliado = afi.id_afiliado ";
$sql.= " WHERE anuncios.id_afiliado=afiliados.id_afiliado AND anuncios.name= '$colname' ";
$sql.= " ORDER BY com.id_comentario";

//Ahora ejecutas la sentencia

$query mysql_query($sql);

//.... resto del código
?>
  #12 (permalink)  
Antiguo 05/08/2010, 21:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

bueno amigo y si el caso no hay comentario??? q pasaria no se mostraria el resultado?
__________________
sitios
www.avisoya.com
www.yavendi.com
  #13 (permalink)  
Antiguo 05/08/2010, 21:46
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: unir 3 tablas en una consulta sql

analiza el query.

mysql_num_rows($query) te dice cuántas filas se encontraron, en el caso de que no se encuentre ninguna, la función te retornará un 0
  #14 (permalink)  
Antiguo 05/08/2010, 22:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a Mysql
  #15 (permalink)  
Antiguo 06/08/2010, 10:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

no dio la sql :(
__________________
sitios
www.avisoya.com
www.yavendi.com
  #16 (permalink)  
Antiguo 08/08/2010, 15:23
 
Fecha de Ingreso: abril-2010
Mensajes: 182
Antigüedad: 14 años, 8 meses
Puntos: 8
Respuesta: unir 3 tablas en una consulta sql

amigo como te fuel pudisteeee?????

Etiquetas: sql, tablas, unir
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:19.