Consulta en Access que cuando haya un valor que se repita más de una vez solo muestre el registro con un creterio.

Tengo una consulta en la que me muestra un resumen de facturas generadas, pero la cuestión es que tengo relacionado el numero de la factura con el producto(os) que esta asociado con esa facturas, entonces la consulta me muestra esto:

Factura producto precio

111001     Cama                  10

111002     Mueble                20

111002     Tornillos                1

Algo así queda la consulta cuando una factura tiene más de 1 producto, quiero que solo me muestre el registro de la factura 111002 con el mayor precio.

2 Respuestas

Respuesta
2

Reconozco que no me gustan las consultas, es preferible hacerlo en código Vb, pero si tengo una tabla

Con ella hago la consulta

Que da como resultado

Con esta consulta 1 hago otra, a la que le añado un campo, al que he llamado Producto, para que te quede como querías

Con lo cual cuando la abres

no me funciona: 

Desde el momento que le pones el campo Nombre, cada registro es distinto y no te los puede agrupar. Por eso te decía que primero hicieras una sólo con Factura y precio, y luego hicieras otra con el campo Producto tal como te lo indiqué.

Imagínate que tuvieras un grupo de gente, con Sexo, Nombre y año nacimiento. Si haces una consulta sólo con Sexo y año de nacimiento sí puedes agruparla porque habrá, por ejemplo, 2 varones nacidos en el año 2000, 3 hembras nacidas ese mismo año, etc. Pero si le añades el campo Nombre, habrá 1 varón llamado Carlos nacido en 2000, otro varón llamado Pepe nacido en el 2000, una hembra llamada María nacida en el 2000, etc. No `puede agruparlos porque cvada registro es distinto.

Respuesta
1

Te dejo un ejemplo:

SELECT productos.id, productos.nombre, productos.precio
FROM productos
WHERE (((productos.precio)=(SELECT Max(productos.precio) AS Mx FROM productos)));

esto iria en codigo sql en la consulta?

Es un ejemplo.

Para que usted lo realice, lo practique y aprenda.

Solo tiene que reemplazar los datos. Por los nombres de tu tabla y campos.

O sube las tablas o tu consulta para ver como lo tienes, y así hacerlo...

seria algo asi https://we.tl/t-ObCRx4a0AD 

Ya esta.

Quedaría de la siguiente manera:

SELECT Factura.Nombre AS Factura_Nombre, Cliente.Nombre AS Cliente_Nombre, Producto.Nombre AS Producto_Nombre, ProductoFactura.Precio
FROM Producto INNER JOIN ((Cliente INNER JOIN Factura ON Cliente.[Clienteid] = Factura.[ClienteId]) INNER JOIN ProductoFactura ON Factura.[FacturaId] = ProductoFactura.[FacturaId]) ON Producto.[ProductoId] = ProductoFactura.[ProductoId]
WHERE (((ProductoFactura.Precio)=(SELECT Max([Precio]) AS [Max] FROM ProductoFactura)));

Pega eso en vista SQL.

disculpa tanta molestia, pero solo me muestra un registro 

Así es. ¿Pues eso querías no? Lo indicas en la siguiente línea

Algo así queda la consulta cuando una factura tiene más de 1 producto, quiero que solo me muestre el registro de la factura 111002 con el mayor precio.

disculpa, me exprese mal, lo que quiero es que me las agrupe. no que solo me muestre una, si no que me muestre todas las facturas pero con un solo registro por factura.

Ahora si entiendo.

Quedaría de la siguiente manera. Pega la consulta en vista SQL.

SELECT Factura.Nombre AS Factura_Nombre, Cliente.Nombre AS Cliente_Nombre, Producto.Nombre AS Producto_Nombre, ProductoFactura.Precio
FROM Producto INNER JOIN ((Cliente INNER JOIN Factura ON Cliente.[Clienteid] = Factura.[ClienteId]) INNER JOIN ProductoFactura ON Factura.[FacturaId] = ProductoFactura.[FacturaId]) ON Producto.[ProductoId] = ProductoFactura.[ProductoId]
WHERE (((ProductoFactura.Precio) In (SELECT Max(ProductoFactura.Precio) AS MáxDePrecio FROM Factura INNER JOIN ProductoFactura ON Factura.[FacturaId] = ProductoFactura.[FacturaId] GROUP BY Factura.Nombre)));

----------------------------------------------------------------------
Vba Access
https://www.youtube.com/c/VBAAccess?sub_confirmation=1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas