Access - Access. Explicación diferentes inner join

 
Vista:
sin imagen de perfil

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
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
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
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Access. Explicación diferentes inner join

Publicado por Manu (3 intervenciones) el 04/10/2021 15:31:59
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access. Explicación diferentes inner join

Publicado por Anonimo (3316 intervenciones) el 04/10/2021 16:04:24
Access intenta cometer el mínimo de errores cuando intenta entender (traducir) las consultas que los usuarios generan de forma grafica al lenguaje SQL.

Es por ello que pone (no impone) paréntesis (y mas paréntesis) por ello, también añade los corchetes sin que el nombre del objeto contenga espacios, o le añade el origen al objeto, algo que no se necesita si se trabaja con un único origen de datos o los nombres no se repiten.

EL motor que analiza y genera la SQL aplica los criterios sin distinguir lo simple de lo complejo, será el programador el que (si tiene dominio suficiente) puede simplificar la SQL para hacer exactamente lo mismo que hace (con mucho o poco texto, de adorno en algunos casos e imprescindible en otros)..

Por cierto, en ocasiones los paréntesis son imprescindibles porque su 'contenido' ha de ser tomado como un referente y ha de generarse (el referente) antes de utilizarlo, los paréntesis implican prioridad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Access. Explicación diferentes inner join

Publicado por Manu (3 intervenciones) el 04/10/2021 17:36:14
Gracias por la respuesta,

Mi nivel de base de datos es de usuario normal pero he intentado informarme de cómo anidar estos inner join en Access y no encuentro suficiente información ¿podrías aconsejarme cómo puedo comprender el orden de esos inner join?

Mi caso es que antiguamente trabajé con SQL server y podía indicar los inner join seguidos. Ahora debo trabajar con Access y me gustaría comprender (en la vista sql) lo que hay por debajo de seleccionar los campos gráficamente (en la vista de diseño).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access. Explicación diferentes inner join

Publicado por Anonimo (3316 intervenciones) el 04/10/2021 23:10:48
EL lenguaje SQL es el mismo para todos, y todos tienen ligeras diferencias para ser 'amable' con los usuarios habituales de ese entorno.

Un ejemplo clásico es como concatenar, en Access se utiliza '&' y en SQL Server '%' para exactamente la misma funcionalidad (y en otros entornos un simple '+').

Access si se programa contra SQL Server, y se le indica (es una opción configurable) admite y aplica esa variación y cuando aparece lo de 'LIke' los compatibiliza con Like (en SQL Server) y ALike (Access-Like) con datos Access.

Si se conoce la 'base' del lenguaje SQL, solo es cosa de aceptar que en algunos lugares el luto es de color negro y en otros lo es el blanco (y ambos lloran a alguien fallecido).

Se puede 'escribir' en la ventana que muestra lo que Access traduce al lenguaje SQL y comparar las dudas, solo se necesita (en la ventana del generador grafico) que la sentencia SQL finalice con un punto y coma (para que el motor de Access se entere de su final o de donde comienza si la SQL define parámetros).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar