Access - Consulta en Access

 
Vista:

Consulta en Access

Publicado por Marcelo (6 intervenciones) el 26/09/2017 21:09:26
Buenas tardes. Agradezco ayuda.

Partiendo de dos tablas en Access
Tabla Productos:
Codigo
Nombre
Precio

Tabla ListadePRecios
CodigoProducto
PrecioNuevo
NombreListadePrecios

Deseo realizar una consulta que muestre todos los registros de la Tabla Productos y el campo PrecioNuevo de la tabla ListadePrecios y cuyo NombreListadePrecios sea igual a xxxxxxx

Probe asi pero me filtra solo los que tienen datos en NombreListadePrecios:

SELECT Productos.codigo, Productos.ClaveProducto, Productos.precio, ListasdePrecios.nombrelista, ListasDePRecios.precioDelivery
FROM Productos LEFT JOIN ListasdePrecios ON Productos.codigo = ListasdePRecios.codproducto
WHERE ListasdePrecios.nombrelista= "pizzasnew";


Gracias de antemano....
Saludos
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
Val: 66
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta en Access

Publicado por Alexander (28 intervenciones) el 27/09/2017 01:09:28
Hola, no entiendo lo de lista de precios sea igual a xxxxxx, estas escribiendo ese dato en un campo? en un formulario? directo a una tabla? directo a la consulta?
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
sin imagen de perfil

Consulta en Access

Publicado por Ignacio (15 intervenciones) el 27/09/2017 17:46:25
En este caso (FROM Productos LEFT JOIN ListasdePrecios), si filtras por un campo de la tabla ListasdePrecios (WHERE ListasdePrecios.nombrelista= "pizzasnew"),es como si hicieras inner join, es decir, el resultado de la consulta son registros que coinciden en ambas tablas (Productos y ListadePrecios).
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

Consulta en Access

Publicado por Marcelo Leonard (6 intervenciones) el 27/09/2017 19:13:15
Exacto Ignacio, el tema es que quiero todos los registros de Producto y solo los de ListasdePrecios cuyo nombre sea igual a uno que seleccione...
Ejemplo

Listas de Precio ListasdePrecios
Cod NombreProd Precio Cod PrecioNuevo NombredeLista
1 Manteca 10.00 2 15.00 xxxxxx
2 Leche 12.00 3 33.00 xxxxxx
3 gaseosa 30.00 2 16.00 yyyyyy

El resultado que deseo obtener si NombredeLista = xxxxxx es

Cod NombreProd Precio PrecioNuevo
1 Manteca 10.00
2 Leche 12.00 15.00
3 Gaseosa 30.00 33.00


Se entiende? Creo que deberia ser algo como full Join pero access no lo admite.

Muchas gracias de antemano.

Saludos.-
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
sin imagen de perfil

Consulta en Access

Publicado por Ignacio (15 intervenciones) el 27/09/2017 20:56:59
No se si te funcionará, pero prueba a añadirle a la cláusula WHERE de tu consulta lo siguiente: OR ListasdePrecios.nombrelista is NULL

Te quedará de esta forma:

SELECT Productos.codigo, Productos.ClaveProducto, Productos.precio, ListasdePrecios.nombrelista, ListasDePRecios.precioDelivery
FROM Productos LEFT JOIN ListasdePrecios ON Productos.codigo = ListasdePRecios.codproducto
WHERE ListasdePrecios.nombrelista= "pizzasnew" OR ListasdePrecios.nombrelista is NULL;

Así obtienes los registros de la tabla "Productos", que no están en la tabla "ListadePRecios" al hacer el inner join, puesto que esos registros tienen el campo "nombrelista" vací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

Consulta en Access

Publicado por Marcelo (6 intervenciones) el 27/09/2017 22:47:45
Hola:

No funciona porque podría tener registros con otro nombre de lista entonces esos mismos no los devolvería.

Necesito que devuelva todos los de la Tabla Productos y luego los de la TAbla Listas de acuerdo a la que seleccione.

Complicado..
Gracias y saludos.
Marcelo
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
sin imagen de perfil

Consulta en Access

Publicado por Ignacio (15 intervenciones) el 28/09/2017 20:00:20
Puedes usar UNION de la siguiente forma:

SELECT Productos.codigo, Productos.ClaveProducto, Productos.precio, ListasdePrecios.nombrelista, ListasDePRecios.precioDelivery
FROM Productos LEFT JOIN ListasdePrecios ON Productos.codigo = ListasdePRecios.codproducto

UNION

SELECT Productos.codigo, Productos.ClaveProducto, Productos.precio, ListasdePrecios.nombrelista, ListasDePRecios.precioDelivery
FROM Productos LEFT JOIN ListasdePrecios ON Productos.codigo = ListasdePRecios.codproducto
WHERE ListasdePrecios.nombrelista= "pizzasnew";


La primera consulta (antes de UNION) te muestra los registros de la tabla Productos, estén o no en la tabla ListasdePrecios.

La segunda consulta (después de UNION) te muestra los registros de la tabla Productos, que están también en la tabla ListasdePrecios y tienen el campo nombrelista (en la tabla ListasdePrecios) con valor "pizzasnew".

Mírate este vídeo: https://www.youtube.com/watch?v=5kEh5TPE0rI
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

Consulta en Access

Publicado por Marcelo (6 intervenciones) el 02/10/2017 22:09:39
Hola Ignacio.
El problema es que me trae los precios de otras listas también que supongo surgen de la primera consulta. Cierto?

No guardo en la tabla listasdeprecios todos los productos para evitar tener registros innecesarios, sino solo aquellos en los cuales tengo un precio nuevo.

Gracias y saludos cordiales.
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
sin imagen de perfil

Consulta en Access

Publicado por Ignacio (15 intervenciones) el 04/10/2017 20:16:52
Creía, que era lo que pedías al decir: "Necesito que devuelva todos los de la Tabla Productos y luego los de la TAbla Listas de acuerdo a la que seleccione."

"El problema es que me trae los precios de otras listas también que supongo surgen de la primera consulta. Cierto?" Cierto. Coges todos los registros de la tabla "productos" y como no filtras (WHERE tabla.campo="dato"), al estar algunos de estos registros también en la tabla "listaprecios", te saldrán en el campo "nombrelista" de la tabla "listadeprecios" diferentes nombres de listas.

Entonces, lo que quieres es, que se muestren únicamente los registros de la tabla "productos", que estén también en la tabla "listadeprecios" (Productos.codigo = ListasdePRecios.codproducto) y además tengan el campo "nombrelista" de la tabla "listadeprecios" un nombre de lista determinado (ListasdePrecios.nombrelista= "pizzasnew"). Lo estabas haciendo bien desde un principio.

SELECT Productos.codigo, Productos.ClaveProducto, Productos.precio, ListasdePrecios.nombrelista, ListasDePRecios.precioDelivery
FROM Productos LEFT JOIN ListasdePrecios ON Productos.codigo = ListasdePRecios.codproducto
WHERE ListasdePrecios.nombrelista= "pizzasnew";
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

Consulta en Access

Publicado por Marcelo (6 intervenciones) el 05/10/2017 15:20:06
Es correcto solo que necesito que de la tabla productos muestre todos los registros, no solo los que también estén en la tabla ListadePrecios.
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
sin imagen de perfil

Consulta en Access

Publicado por Ignacio (15 intervenciones) el 07/10/2017 15:49:24
Entonces, estarás en las mismas que al utilzar UNION, tendrás registros de otras listas diferentes a "pizzasnew" (ListasdePrecios.nombrelista= "pizzasnew").
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

Consulta en Access

Publicado por Marcelo (6 intervenciones) el 09/10/2017 18:12:15
Correcto... supongo que debe haber alguna forma pero no se cual es..

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