MySQL tiene una sintaxis bastante flexible comparada con MS SQL al momento de hacer JOINs. En MySQL puedes hacer un JOIN de dos maneras, sin embargo, sería conveniente hacerlo de la forma de MS SQL de manera de que el código sea más portable.

En MySQL pudes hacer un múltiple JOIN (JOIN entre varias tablas) de la siguiente manera:
FROM tabla1
INNER JOIN tabla2 ON tabla1.id=tabla2.id
INNER JOIN tabla3 ON tabla2.id2=tabla3.id2
En esta consulta, los JOINS son ejecutados secuencialmente, primero se hacer el primer JOIN, cuando está listo se hace el siguiente, luego el siguiente y así sucesivamente.
En MS SQL, la sintaxis para el múltiple JOIN necesita hacerse de la siguiente forma (también soportada por MySQL):
FROM tabla1
INNER JOIN
(tabla2 INNER JOIN tabla3 ON tabla2.id2=table3.id2)
ON tabla1.id=tabla2.id
En esta consulta, los JOINs son ejecutados de adentro hacia afuera. Primero se ejecuta el JOIN entre paréntesis más internos, luego el siguiente fuera de los paréntesis, luego el siguiente y así sucesivamente.
Vía: VXT



ebe
agosto 29, 2008
claro y conciso,, se agradece.
un saludo
Yedi
septiembre 6, 2008
Exelente resumen me ayudo mucho
Gracias
Luciano
septiembre 6, 2008
Gracias por los comentarios.
Saludos.
Rodolfo
septiembre 21, 2008
Ammm… dentro de la consulta de la tabla2 y tabla3, creo que se le paso por alto al compañero la relación:
(tabla2 INNER JOIN tabla3 ON tabla2.id2=table2.id2)
no es?:
(tabla2 INNER JOIN tabla3 ON tabla2.id2=table3.id2)
Saludos.
Luciano
septiembre 21, 2008
Es correcto lo que dices, se me ha pasado por alto
Ya lo he corregido.
Muchas gracias por el comentario y la aclaración.
mauricio
octubre 22, 2008
Hola y con diferentes BD como sería?? gracias.
poqueria
noviembre 4, 2008
El inner join de mssql deberia ser asi:
SELECT *
FROM tabla1 as t1
INNER JOIN tabla2 as t2
on t1.id1=t2.id1
INNER JOIN tabla3 as t3
ON t2.id2=t3.id2
y asi todos los q quieras..
Es mas eficiente ya que de la forma que lo haces realiza una subconsulta como tabla derivada y eso lo hace mas pesado para el motor.
Me encanta mysql ya q ofrece la posibilidad de ser usado en forma gratuita, pero no confundan en las prestaciones de una y otra herramieta…
Alex
febrero 23, 2009
Hola, no he logrado hacer la consulta. he intentado de varias manera y no doy pié con bola.
Estas son las tablas que tengo:
Tabla1: user
Campo 1: id
Campo 2: Nick
Campo3: email
Campo4: password
Tabla2: comentarios
Campo1: Id
Campo2: id_user
Campo3: titulo
Campo4: texto_comentario
Tabla3: respuestas
Campo1: Id
Campo2: id_coment
Campo3: respuestas
Quiero unir-> user.id con comentarios.id_user y a su vez comentarios.Id con respuestas.id_coment
La consulta que he creado es:
$query_foro = sprintf(“SELECT user.*, comentarios.*, respuestas.* FROM (user INNER JOIN comentarios ON user.id=comentarios.id_user) INNER JOIN respuestas ON respuestas.id_coment=comentarios.Id “);
No puedo hacer una tabla dinamica en Dreamweaver ya que no me reconoce la consulta, sin embargo hago una vista previa en el explorer y no hay error.
Hector Garza
agosto 17, 2009
Gracias por la aportacion ahora he podido realizar la consulta de 7 tablas relacionadas entre si.
Saludos.
celso mendoza
septiembre 27, 2009
es una explicacion precisa y concreta te ayuda y aclara tus dudas
ElAprendis
enero 9, 2010
Yo Tambien deseo hacer lo mismo que Alex
Tabla1: user
Campo 1: id
Campo 2: Nick
Campo3: email
Campo4: password
Tabla2: comentarios
Campo1: Id
Campo2: id_user
Campo3: titulo
Campo4: texto_comentario
Tabla3: respuestas
Campo1: Id
Campo2: id_coment
Campo3: respuestas
Quiero unir-> user.id con comentarios.id_user y a su vez comentarios.Id con respuestas.id_coment
La consulta que he creado es:
$query_foro = sprintf(“SELECT user.*, comentarios.*, respuestas.* FROM (user INNER JOIN comentarios ON user.id=comentarios.id_user) INNER JOIN respuestas ON respuestas.id_coment=comentarios.Id “);
No puedo hacer una tabla dinamica en Dreamweaver ya que no me reconoce la consulta, sin embargo hago una vista previa en el explorer y no hay error.
AYUDA!!! Help!!
carlos
agosto 20, 2010
graciaaaaaaaaaaasssssssssssssss me salvo de una regrande
marks calderon
agosto 31, 2010
excelente me ayudo!!!.
Saludos desde Perú
Enrique
diciembre 7, 2010
Muchas gracias, realmente más sencillo que el mismo manual oficial
SaludOS
miguel
diciembre 7, 2010
hey man te lo agradezco he buscado mucho ese codigo lo rekeria urgente para un trabajo final se agradece el wen aporte…… seria xvr tener material asi siempre
Antonio
mayo 13, 2011
Estimados.
Yo tengo un problema parecido, que no lo puedo solucionar, les agradecería si me pudieran orientar. Tengo tabla Turno (Id, Fecha, Hora, Id_User) una tabla Usuarios (Id_User, Apellido, Nombre,etc), necesito mostra los siguientes campos Turno.Fecha, Turno.Hora, Turno.Id_User, Usuario.Apellido, Usuario.Nombre para una fecha determinada, y que me muestre tambien las horas que no tengan asignado un Id_User.
Desde ya les agradezco cualquier ayuda.
daniel
junio 17, 2011
Muchas gracias me sirvio bastante, saludos.
gabo
julio 24, 2011
muy claro ! gracias …@poqueria gracias por el aporte
luis
septiembre 10, 2011
me parece que esta es mejor
SELECT P.idPersonal,P.Nombres,P.Apellidos,P.idCargo, C.Nombre
from personal P INNER JOIN Cargo C ON P.idCargo= C.idCargo;
la insercion es asi pero si gustan la optimizan con procedimiento almacenado
insert into `bdtransporte`.`personal`(Nombres, Apellidos, Email,Dni,Usuario,Contraseña,idCargo)
values(‘luis’, ‘caceres’, ‘luis_caceres@hotmail.com’, ’45184545′, ‘luis’, ’123′, 1);
chorulo
octubre 21, 2011
Capo Luis. De toda la basura que encontre en internet tu respuesta fue la mas acertada y funcionó de maravilla.
Gran capo Luis.
fabian
octubre 26, 2011
Tambien yo tengo el mismo error pongan mas ejemplos
Alejandro Mosquera
diciembre 29, 2011
EN SqlServer 2008 lo puedes hacer exactamente como lo haces con MYSQL
Cinthya
enero 2, 2012
Muchas gracias por el aporte!!!
che luis
marzo 12, 2012
gracias, me fue de mucha ayuda