Query nidificate e valori massimi

di il
9 risposte

Query nidificate e valori massimi

Ciao A tutti
Ho cercato nei vari argomenti, ma non sono riuscita a trovare un argomento che possa aiutarmi nella mia programmazione.
Vi spiego prima di tutto il problema:
Devo attribuire a ciascun dipendente la sua formazione obbligatoria in funzione del valore del grado di rischio che potrebbe correre nelle sue varie mansioni. Ad esempio la mansione "Addetto all'amministrazione" corre un rischio di grado basso; mentre la mansione "addetto al carrello elevatore" corre un rischio alto. In un organizzazione aziendale la distribuzione delle mansioni potrebbe essere tale per cui lo stesso operatore svolge più mansioni e queste possono avere gradi di pericolosità diversi. In questi casi, nell'attribuzione del modulo di formazione vince il grado più alto.

A questo punto io metto nella query l'interrogazione che va dalla tb personale alla tabella mansioni alla tabella grado di rischio della mansione e quindi alla tabella modulo di formazione in funzione del grado di rischio.
Ma, giustamente, la query mi da tante righe quante sono le mansioni. Come posso fare per ovviare a questo problema.
Grazie in anticipo
Marcella

9 Risposte

  • Re: Query nidificate e valori massimi

    Quindi tu di Tizio che ha 5 Mansioni con 5 gradi-rischio diversi vuoi vedere, non tutte e 5 le mansioni, ma solo quella con il Max di grado-rischio?
  • Re: Query nidificate e valori massimi

    Si
  • Re: Query nidificate e valori massimi

    Ciao Osvaldo
  • Re: Query nidificate e valori massimi

    Maratzor ha scritto:


    ...
    A questo punto io metto nella query l'interrogazione che va dalla tb personale alla tabella mansioni alla tabella grado di rischio della mansione e quindi alla tabella modulo di formazione in funzione del grado di rischio.
    ...
    Senza vedere la SQL completa è difficile dare indicazioni precise sui campi strategici ma a grandi linee devi fare una query di raggruppamento per nome e selezionare Max per il grado di rischio. Per indicazioni più precise però, come ho detto, serve la query.
  • Re: Query nidificate e valori massimi

    Ecco la SQL della query che ho fatto secondo il tuo suggerimento

    SELECT Personale.ID, Personale.Cognome, Personale.Nome, Mansioni.DESCRIZIONE, [Storico Persona vs Mansioni].[Data incarico], [Storico Persona vs Mansioni].[Data revoca incarico], [Storico Mansioni vs grado di rischio].[Data associazione], [Storico Mansioni vs grado di rischio].[Data fine associazione], [Moduli di formazione].[Titolo modulo], Max([Grado rischio e valore associato].Valore) AS MaxDiValore
    FROM ((Personale INNER JOIN ((Mansioni INNER JOIN [Storico Mansioni vs grado di rischio] ON Mansioni.Id = [Storico Mansioni vs grado di rischio].[Id mansione]) INNER JOIN [Storico Persona vs Mansioni] ON Mansioni.Id = [Storico Persona vs Mansioni].[Id Mansione]) ON Personale.ID = [Storico Persona vs Mansioni].[Id Personale]) INNER JOIN [Grado rischio e valore associato] ON [Storico Mansioni vs grado di rischio].[Id Grado rischio] = [Grado rischio e valore associato].ID) INNER JOIN ([Moduli di formazione] INNER JOIN [Moduli vs per grado rischio mansione] ON [Moduli di formazione].ID = [Moduli vs per grado rischio mansione].[Id Modulo]) ON [Grado rischio e valore associato].ID = [Moduli vs per grado rischio mansione].[Id Grado rischio]
    GROUP BY Personale.ID, Personale.Cognome, Personale.Nome, Mansioni.DESCRIZIONE, [Storico Persona vs Mansioni].[Data incarico], [Storico Persona vs Mansioni].[Data revoca incarico], [Storico Mansioni vs grado di rischio].[Data associazione], [Storico Mansioni vs grado di rischio].[Data fine associazione], [Moduli di formazione].[Titolo modulo];


    Come vedi mi ripete le righe anche delle mansioni con un grado basso. Dove sbaglio?
  • Re: Query nidificate e valori massimi

    Maratzor ha scritto:


    Ecco la SQL della query che ho fatto secondo il tuo suggerimento...
    Che non fosse proprio così semplice come l'avevo descritta all'inizio lo immaginavo, è normale quando si devono fare queste cose ma... urca me la sono proprio cercata.
    Compaiono campi di cui non capisco il significato e di conseguenza che cosa possono avere a che fare con quello che ti serve. Mi riferisco a [Storico Persona vs Mansioni].[Data incarico], [Storico Persona vs Mansioni].[Data revoca incarico], [Storico Mansioni vs grado di rischio].[Data associazione], [Storico Mansioni vs grado di rischio].[Data fine associazione]. Si devono prendere così come sono? Se c'è una data di revoca incarico lo si deve considerare lo stesso? Devono esserci per forza? Magari per te è una cosa normale, io non conosco il "tuo settore" e se posso togliere di mezzo qualche campo-tabella ben venga.
  • Re: Query nidificate e valori massimi

    Grazie a tutti ma ho risolto.
    In pratica ho dovuto fare tre query
    la prima per ciascun Id del personale mi calcolava quale era il loro massimo grado di rischio che correvano nelle diverse masioni assegnate,
    la seconda prende in considerazione per ciascun grado di perisolosità della mansione del dipendente tutti i moduli di formazione richiesti
    A questo punto correlando l'ID di entrambe queste query e il max valore della prima con il valore della seconda ho chiesto che mi visualizzasse solo le righe che erano uguali per questi due.
    Grazie comunque
  • Re: Query nidificate e valori massimi

    Compaiono campi di cui non capisco il significato e di conseguenza che cosa possono avere a che fare con quello che ti serve. Mi riferisco a [Storico Persona vs Mansioni].[Data incarico], [Storico Persona vs Mansioni].[Data revoca incarico], [Storico Mansioni vs grado di rischio].[Data associazione], [Storico Mansioni vs grado di rischio].[Data fine associazione]. Si devono prendere così come sono? Se c'è una data di revoca incarico lo si deve considerare lo stesso? Devono esserci per forza? Magari per te è una cosa normale, io non conosco il "tuo settore" e se posso togliere di mezzo qualche campo-tabella ben venga.
    [/quote]

    Si devono esserci per forza ed infatti è stato quando ho capito che dovevo valutare anche questi campi che il tutto è impazzito.
    Adesso sono troppo contenta di esserci riuscita grazie ancora perchè comunque il vostro forum è una fonte di enormi spunti di ragionamento.

  • Re: Query nidificate e valori massimi

    Maratzor ha scritto:


    In pratica ho dovuto fare tre query...
    Che alla fine, gira gira, probabilmente è quello che ti avrei detto anch'io di fare, per trovarne il capo, andare cioè a "step di query". Bene, tutto a posto, ora non ha più importanza (per me) conoscere il significato di quei campi.
Devi accedere o registrarti per scrivere nel forum
9 risposte