
Access. Explicación diferentes inner join
Publicado por Manu (3 intervenciones) el 04/10/2021 13:16:25
Buenas, tengo estos ejemplos de Access que les quería mostrar pero no entiendo por qué en cada caso se colocan los inner join de esa forma (a veces con paréntesis, otras no...).
¿Alguien me podría explicar por qué se estructuran así los inner join en cada ejemplo? En sql server management entiendo que no haría falta esos paréntesis ni ese orden y se podrían utilizar los inner join sin ellos, ¿no? Es decir, uno detrás de otro y ya está.
Ejemplo 1

Nombre productos con precio mayor 30 dólares de Alemania.
select Productos.Nombreproducto, productos.preciounidad
FROM Productos
INNER JOIN (Pedidos INNER JOIN [Detalles de pedidos] ON Pedidos.IdPedido = [Detalles de pedidos].IdPedido)
ON Productos.IdProducto = [Detalles de pedidos].IdProducto
where productos.preciounidad>30 and Pedidos.PaísDestinatario="ALEMANIA"
Ejemplo 2

Nombre, apellido y cargo empleados con unidades de pedidos mayor a 100.
SELECT Empleados.Nombre, Empleados.Apellidos, Empleados.Cargo, [Detalles de pedidos].Cantidad
FROM (Empleados
INNER JOIN Pedidos ON Empleados.IdEmpleado = Pedidos.IdEmpleado)
INNER JOIN [Detalles de pedidos] ON Pedidos.IdPedido = [Detalles de pedidos].IdPedido
WHERE ((([Detalles de pedidos].Cantidad)>100));
Ejemplo 3

Clientes que alquilaron película estrenada en 1997 y el título de la misma
SELECT Clientes.Nombre, Películas.Título
FROM Películas
INNER JOIN (Clientes
INNER JOIN (Dvd INNER JOIN Alquiler ON Dvd.[Ident-Dvd] = Alquiler.[ident-Dvd])
ON Clientes.DNI = Alquiler.DNI)
ON Películas.Título = Dvd.Título
WHERE (((Películas.Estreno)=1997));
¿Alguien me podría explicar por qué se estructuran así los inner join en cada ejemplo? En sql server management entiendo que no haría falta esos paréntesis ni ese orden y se podrían utilizar los inner join sin ellos, ¿no? Es decir, uno detrás de otro y ya está.
Ejemplo 1

Nombre productos con precio mayor 30 dólares de Alemania.
select Productos.Nombreproducto, productos.preciounidad
FROM Productos
INNER JOIN (Pedidos INNER JOIN [Detalles de pedidos] ON Pedidos.IdPedido = [Detalles de pedidos].IdPedido)
ON Productos.IdProducto = [Detalles de pedidos].IdProducto
where productos.preciounidad>30 and Pedidos.PaísDestinatario="ALEMANIA"
Ejemplo 2

Nombre, apellido y cargo empleados con unidades de pedidos mayor a 100.
SELECT Empleados.Nombre, Empleados.Apellidos, Empleados.Cargo, [Detalles de pedidos].Cantidad
FROM (Empleados
INNER JOIN Pedidos ON Empleados.IdEmpleado = Pedidos.IdEmpleado)
INNER JOIN [Detalles de pedidos] ON Pedidos.IdPedido = [Detalles de pedidos].IdPedido
WHERE ((([Detalles de pedidos].Cantidad)>100));
Ejemplo 3

Clientes que alquilaron película estrenada en 1997 y el título de la misma
SELECT Clientes.Nombre, Películas.Título
FROM Películas
INNER JOIN (Clientes
INNER JOIN (Dvd INNER JOIN Alquiler ON Dvd.[Ident-Dvd] = Alquiler.[ident-Dvd])
ON Clientes.DNI = Alquiler.DNI)
ON Películas.Título = Dvd.Título
WHERE (((Películas.Estreno)=1997));
Valora esta pregunta


0