Foros del Web » Bases de Datos » Mysql »

Como usar el INNER JOIN

Estas en el tema de Como usar el INNER JOIN en el foro de Mysql en Foros del Web. hola, revisando alguna documentacion referente a como hacer consultas en varias tablas al tiempo, veo que con inner join es posible, el problema es que ...
  #1 (permalink)  
Antiguo 26/01/2006, 23:37
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.320
Antigüedad: 13 años, 6 meses
Puntos: 20
Como usar el INNER JOIN

hola, revisando alguna documentacion referente a como hacer consultas en varias tablas al tiempo, veo que con inner join es posible, el problema es que los ejemplos que he visto son solo para trabajar con 2 tablas, pero que pasa cuando se trabaja con mas de 2 tablas? por ejemplo en mi caso tengo que utilizar 6 tablas que contienen informacion que necesito, como le hago para relacionar las 6?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 27/01/2006, 00:02
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.320
Antigüedad: 13 años, 6 meses
Puntos: 20
intente hacer esto
Código PHP:
$busqueda="SELECT * FROM municipio INNER JOIN disposicion_final.mun = municipio.mun AND educacion_ambiental.mun = municipio.mun WHERE mun = '" $mun "'";
$datos=mysql_query($busqueda) or die(mysql_error()); 
pero me dice
Cita:
Algo está equivocado en su sintax cerca '.mun AND educacion_ambiental.mun = municipio.mun WHERE mun = 'AL' en la linea 1
__________________
Say no more.......
  #3 (permalink)  
Antiguo 27/01/2006, 02:25
 
Fecha de Ingreso: marzo-2005
Ubicación: Panamá
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 1
Puedes combinar más de dos tablas

Para lo cual tendrías que sustituir en la sintaxis una tabla por un INNER JOIN completo.

Por ejemplo:

SELECT *
FROM (pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie) INNER JOIN empleados ON pedidos.rep = empleados.numemp

En vez de tabla1 hemos escrito un INNER JOIN completo, también podemos escribir:

SELECT *
FROM clientes INNER JOIN (pedidos INNER JOIN empleados ON pedidos.rep = empleados.numemp) ON pedidos.clie = clientes.numclie

En este caso hemos sustituido tabla2 por un INNER JOIN completo.

También puedes utilizar las operaciones LEFT JOIN o RIGHT JOIN si quieres un resultado en el que por lo menos haya coincidencia en dos tablas y sin importar que en una tercera no se de la coincidencia.


Otra forma de hacer consultas en varias tablas sería con el mismo SELECT * From Tabla1, Tabla2, Tabla3, Tabla4 WHERE Tabla1.IDCliente = Tabla2.IDCliente and Tabla1.IDCliente=Tabla3.IDCliente and Tabla3.IDSucursal = Tabla4.IDSucursal


Todo dependerá del tipo de consulta que quieras conseguir, o los resultados que necesites

Bueno espero que te sea de ayuda algo de esto, Chao y Suerte!!
  #4 (permalink)  
Antiguo 27/01/2006, 02:31
 
Fecha de Ingreso: marzo-2005
Ubicación: Panamá
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 1
Prueba este código, te falto el ON en tu consulta con el INNER JOIN

SELECT * FROM (municipio INNER JOIN disposicion_final ON disposicion_final.mun = municipio.mun) INNER JOIN educacion_ambiental ON educacion_ambiental.mun = municipio.mun and mun = '" . $mun . "'";
  #5 (permalink)  
Antiguo 27/01/2006, 02:37
 
Fecha de Ingreso: marzo-2005
Ubicación: Panamá
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 1
Se me olvidaba en la respueta anterior, ese mun tienes que especificarle una tabla por ejemplo municipio.mun = '".$mun."'
  #6 (permalink)  
Antiguo 27/01/2006, 02:52
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 10 años, 1 mes
Puntos: 8
Cita:
Otra forma de hacer consultas en varias tablas sería con el mismo SELECT * From Tabla1, Tabla2, Tabla3, Tabla4 WHERE Tabla1.IDCliente = Tabla2.IDCliente and Tabla1.IDCliente=Tabla3.IDCliente and Tabla3.IDSucursal = Tabla4.IDSucursal
Eso es superpesado para el gestor, y como las 4 tablas tengan muchas tuplas, buf.... Mejor los JOINS

Otra cosa es que no hacen falta parentesis, te recomiendo que pongas cada en JOIN en una línea de codigo distinto para luego leer con facilidad y que utilices alias en las tablas para no generar macro consultas (de largas)
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 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:15.
SEO by vBSEO 3.3.2