query eliminazione campi duplicati in base ad un valore

Anonimo
2013-12-06T03:15:16+00:00

Salve a tutti come sempre chiedo il vostro indispensabile supporto.

Ho una tabella/query in cui ho una serie di campi tra cui:

-nome prodotto

-ean(codice a barre)

-prezzo

devo eliminare i duplicati nome prodotto lasciando il prodotto con il prezzo più basso

in seguito dal risultato ottenuto, devo eliminare i duplicati ean lasciando il prodotto con il prezzo più basso

chiaramente dutti quelli non duplicati devo visualizzarli.

Sempre in microsoft comunity avevo avuto un ottimo consiglio,ovvero l'utilizzo di raggruppamento in base ai campi su cui effettuare la ricerca di duplicati quindi prima nome prodotto e prezzo (rispettivamente nome prodotot raggruppamento e prezzo min)

e poi ean e prezzo (rispettivamente ean raggruppamento e prezzo min)

a quel punto avrei dovuto effettuare una selezione di corrispondenza diretta di tipo join di tipo1 con la tabella di orgine per trovare tutti i campi corrispondenti, un'altra query di ricerca campi non corrispondenti.

Unendole avrei dovuto ottenere il risultato sperato.

Il problema è che per ean non ci sono problemi ma con il campo nome prodotto riporta più valori quando faccio il join di corrispondenza.

Non posso inserire anche id perchè aumenta il numero di risultati.

quale altra soluzione devo utilizzare.

Grazie a tutti

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-12-10T08:28:47+00:00

Non esiste il problema perchè tu non richiami il Modulo ma una specifica Sub (o funzione) al suo interno con uno specifico nome.

Se ritieni risolto il tuo problema contrassegnalo come risposta, così agevoliamo il lavoro dei moderatori.

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-12-06T19:51:37+00:00

Ciao Gianfranco,

un consiglio, fai una copia del file ACCDB e quindi effettua un compatta e ripristina, così facendo le dimensioni del file si riducono ad meno di 1/4.

la query è la seguente:

SELECT [RAGGR MANUFACURE REFERENCE].[Manufacturer Reference], [RAGGR MANUFACURE REFERENCE].[MinDiPrezzo Vendita], DFirst("ID","[PIX PRO ORIGINE]","[Manufacturer Reference] = '" & [Manufacturer Reference] & "' And val([Prezzo Vendita]) = " & Val([MinDiPrezzo Vendita])) AS Espr1

FROM [RAGGR MANUFACURE REFERENCE];

Il problema è che i tempi di esecuzione sono un po' lunghi.

Se nel tuo applicativo queste query devono essere eseguite spesso penso sia opportuno cambiare approccio ad es. con una routine (codice) VBA .

Fammi sapere

Mimmo

La risposta è stata utile?

0 commenti Nessun commento

38 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-12-06T13:57:02+00:00

    Ciao,

    con una nuova query aggiungi con la DFirst, al risultato della query di raggruppamento, l'ID di uno dei records con un particolare prodotto e prezzo per aggirare il problema che ti dicevo di eventuali doppi e quindi, con una query (di tipo 1), ti estrai i dati restanti dalla tabella origine.

    DFirst("ID";"Prodotti";"[Nome Prodotto] = '" & [Nome Prodotto] & "' And Prezzo = " & Prezzo)

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-12-06T12:35:31+00:00

    Grazie Mimmo 57 partendo dal presupposto finora propio tu mi avevi aiutato a risolvere questo problema.

    Ma come dfirst restituisci un record casuale da un campo.

    Non sarebbe meglio usare Dlookup che restiusci il valore di un campo relativo ad un altro campo.

    Non ho mai usato queste espressioni per cui ho solo fatto un ipotesi.

    Potresti postare un esempio di apllicazione.

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-12-06T11:25:34+00:00

    Il problema è che per ean non ci sono problemi ma con il campo nome prodotto riporta più valori quando faccio il join di corrispondenza.

    Potresti porre anche la condizione di uguaglianza del prezzo.

    Ma avresti il problema che se hai un prodotto che ha due volte quel prezzo minimo vengono estratte entrambe le righe.

    In alternativa, con una DFirst ti estrai l'ID, per prodotto e prezzo, quindi procedi al join.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento