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:
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):
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
23 Respuestas para "Múltiple INNER JOIN – MySQL vs MS SQL"
claro y conciso,, se agradece.
un saludo
Exelente resumen me ayudo mucho
Gracias
Gracias por los comentarios.
Saludos.
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.
Es correcto lo que dices, se me ha pasado por alto
Ya lo he corregido.
Muchas gracias por el comentario y la aclaración.
Hola y con diferentes BD como sería?? gracias.
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…
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.
Gracias por la aportacion ahora he podido realizar la consulta de 7 tablas relacionadas entre si.
Saludos.
es una explicacion precisa y concreta te ayuda y aclara tus dudas
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!!
graciaaaaaaaaaaasssssssssssssss me salvo de una regrande
excelente me ayudo!!!.
Saludos desde Perú
Muchas gracias, realmente más sencillo que el mismo manual oficial
SaludOS
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
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.
Muchas gracias me sirvio bastante, saludos.
muy claro ! gracias …@poqueria gracias por el aporte
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);
Capo Luis. De toda la basura que encontre en internet tu respuesta fue la mas acertada y funcionó de maravilla.
Gran capo Luis.
Tambien yo tengo el mismo error pongan mas ejemplos
EN SqlServer 2008 lo puedes hacer exactamente como lo haces con MYSQL
Muchas gracias por el aporte!!!
Comentarios: