Valore massimo per un determinato valore

di il
5 risposte

Valore massimo per un determinato valore

Sto collegando 2 tabelle in Access.
I dati che incrocio tra le 2 tabelle sono in comune.
Nella query di esecuzione dovrei riportare il valore massimo dei dati incrociati in una determinata colonna. Ma con il criterio Max non riesco, o meglio, mi funziona male.
A query eseguita mi riporta il valore massino come prima opzione e mi riporta in ordine decrescere anche tutti gli altri valori.
C'è un modo per dire in query di riportare SOLO il valore massimo?

5 Risposte

  • Re: Valore massimo per un determinato valore

    Hai erogato una serie di concetti che possono confondere in quanto senza i dovuti dettagli tecnici, quindi complica capire dove c'è una lacuna tecnica o un problema specifico...

    Le 2 tabelle, perché sono 2 con dati omologhi spero sia una scelta ragionata, hanno anche una chiave confrontabile si spera...
    La funzione MAX agisce con dati Aggregati quindi è evidente non vada bene...

    Non si comprende poi questa query di esecuzione cosa debba fare e su cosa... lo debba fare...
    Per prendere il valore massimo basta usare:
    
    IIF(ValoreTab1>ValoreTab2;ValoreTab1;ValoreTab2)
    
    Vedi tu...
  • Re: Valore massimo per un determinato valore

    Ciao, grazie per la risposta.
    Guarda di lacune tecniche sicuramente ce ne sono..hai perfettamente ragione.
    Ecco perché sono in questo forum.

    La query di esecuzione deve riportare il valore più altro di un componente tra vari venditori.
    Alcuni hanno prezzi bassi altri prezzi alti.

    In Table1 si trovano molti fornitori con vari prezzi per ogni tipo di componente acquistato.
    In Table2 si trovano solo componenti con il numero di compoenti da acquistare.
    Table1 e Table2 hanno come relazione una chiave di lettura tra loro.
    Ma solo in Table1 trovo i prezzi dei venditori.
    Table1 è come se fosse il mio listino.
    Table2 è come se fosse un ordine con le quantità dei componenti e con la query vado ad aggiungere il prezzo piu alto di un determinato venditore.

    Per componente si intende per esempio una *valvola*.

    Posso allegarti domattina uno stralcio di dati per farmi capire meglio?
  • Re: Valore massimo per un determinato valore

    Allora devi aggiornare il prezzo in relazione al valore più alto per componente...
    Suggerirei una cosa un poco piu complessa...
    Crei una query raggruppata per componente con il Max(prezzo)
    Poi esegui un ciclo del recordset ed estraendo il codoce componente ed il prezzo esegui per ognuno la query Update su prezzo indicando la WHERE condition sul Componente...

    P.s. ma nel caso di valvole ha solo componenti finiti o ad esempio anche parti di dettaglio TRIM/OTTURATORE/BADERNE/GABBIA ecc ... ovviamente è un esempio per arrivare alla eventuale struttura gerarchica...
    Definita la valvola regolatrice l'assemblato ha codice XX ed i suoi componenti ricambi XX-01 XX-02 ecc...
    In questo caso le cose sono più articolate.
  • Re: Valore massimo per un determinato valore

    Table1_LISTINO = DATI DA LISTINO
    Consol Project Name, Project Job Number, Year, Vendor, Comp Name, Object Description, Unit Price Original Currency, Valuta

    Table2_ORDINE = DATI ORDINE PER PREZZARE DELLE VALVOLE
    UNIT, LINE TAG, FLUID, FAMILY DESCRIPTION, UM, MECQTY QUANTITY

    RISULATO DELLA QUERY SAREBBE INSERIRE IL PREZZO PER OGNI TIPO DI VALVOLA A FRONTE DI UN PREZZO DI UN DETERMINATO VENDITORE
    La Table2_ORDINI ha come joint verso la Table1_LISTINO i seguenti dei record in comune:
    TypeObject/1-5, Material/6-10, Diameter Serie/21-22, Main Diameter/23-24, Secondary Diameter/25-26, Other Diameter/27-28, Main Thickness/33-37, Secondary Thickness/38-42, Other Thickness Bolts/Pipe length/Ring joint Number/43-47, End/48-51, Class/52, Rating/53, Facing/54, Finish/55, Elbow Degree/56, Eccentricity/57, Branch Angle/58, Sched/Cod Aus/59, Costr Norm/60, Num Mesh/61, Coating/62, Nipple Length/63, Nace/64, Color Code/65, Dye Stamp/66
    Come proprietà di joint ho messo "includi tutti i record di Table2_ORDINE e solo i record di Table1_LISTINO in cui i campi collegati sono ugali.

    A Query eseguita dovrei essere in grado di riportate lo Unit Price Original Currency che trovo in Table1_LISTINO a fronte dello stesso incrocio tra i campi sono indicati.

    In query ho aggiunto anche la colonna per il prezzo totale
    Total_Price: [Table2_ORDINE]![MECQTY QUANTITY]*[Table1_LISTINO]![Unit Price Original Currency]

    Cosa succede però a query eseguita?
    1) dove trovo i campi vuoti di Consol Project Name, Project Job Number, Year, Vendor, Comp Name, Object Description, Unit Price Original Currency, Valuta
    è perchè giustamente in Table2_ORDINI ci sono valvole che no si trovano in Table1_LISTINO (e mi sta bene, è giusto così)

    2) non riesco a riportare per ogni riga da Table2_ORDINE lo Unit Price Original Currency con il prezzo MASSIMO
    la riche si suplicano perchè in Table1_LISTINO ci sono più Vendor con prezzi differenti.

    Mi puoi aiutare a risolvere il problema?
    Allegati:
    28994_ace9e62b38be8925344498341852cbe2.png
    28994_ace9e62b38be8925344498341852cbe2.png

    28994_919ce8f196ef6bf3d454279f1a47a5ce.png
    28994_919ce8f196ef6bf3d454279f1a47a5ce.png
  • Re: Valore massimo per un determinato valore

    Le immagini sono illeggibili, in ogni caso per determinare il prezzo massimo di ciascun componente devi creare inizialmente una query di selezione con i soli campi su cui vuoi i relativi valori (quindi raggruppata sul componente e con il massimo sul prezzo). Quando la query di selezione è corretta la puoi tramutare in una query di aggiornamento o inserimento,
Devi accedere o registrarti per scrivere nel forum
5 risposte