Visualizzazione dei risultati da 1 a 8 su 8

Discussione: aiuto query

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    4

    aiuto query

    Salve,
    da un database così strutturato:

    Tabella operai
    IDOPERAIO | COGNOME | NOME | DATADINASCITA | LUOGODILAVORO | MANSIONE

    Tabella cambiomansione
    IDOPERAIO | DATACAMBIO | LUOGODILAVORO | MANSIONE |

    Ho bisogno di creare una query che visualizzi la seguente tabella:
    OPERAIO | LAVORO | VARIAZIONE NELL’ ANNO
    (COGNOME + NOME) (MANSIONE + LUOGODILAVORO
    al 1° Gennaio)
    (DATACAMBIO + MANSIONE)

    Nel caso in cui non ci sia stata nessuna variazione il campo variazione dovrà rimanere vuoto.
    Grazie per la disponibilità

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    15
    Sicuramente per poter concatenare due campi puoi utilizzare la concatenazione classica in questo caso:
    SELECT nome + ' ' + cognome AS nomecompleto,idOperaio FROM Operai

    Per quanto riguarda il resto della domanda ancora non mi è chiaro, la tabella cambiomansione viene popolata solamente nel caso in cui un operaio cambi mansione?
    Ultima modifica di andrewkp; 05-04-2017 a 11:33

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    4
    Quote Originariamente inviata da andrewkp Visualizza il messaggio
    Sicuramente per poter concatenare due campi puoi utilizzare la concatenazione classica in questo caso:
    SELECT nome + ' ' + cognome AS nomecompleto,idOperaio FROM Operai

    Per quanto riguarda il resto della domanda ancora non mi è chiaro, la tabella cambiomansione viene popolata solamente nel caso in cui un operaio cambi mansione?
    Grazie per la risposta
    Si la tabella cambiomansione viene popolata ogni volta che l'operaio cambia mansione e mantiene lo storico dei cambi effettuati.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    15
    Ok, quindi la query sarà:

    SELECT o.nome + ' ' + o.cognome AS nomecompleto, o.mansione+' '+o.luogolavoro as lavoro,cm.datacambio +' '+cm.mansione FROM Operai o, cambiomansione cm
    where o.id=cm.id

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da aspidd Visualizza il messaggio
    ...... da un database così strutturato: ........
    Ma perche metti:
    - la prima mansione dell'operaio nella tabella "operai"
    - e tutte le altre mansioni nella tabella "cambiomansione"
    Va bene la denormalizzazione, ...... ma questa struttura mi sembra senza senso


    Indipendentemente dalla query che devi realizzare io il DB lo strutturerei cosi:

    Tabella operai
    IDOPERAIO | COGNOME | NOME | DATADINASCITA |

    Tabella mansioni
    IDOPERAIO | DATAInizioMansione | LUOGODILAVORO | MANSIONE |


    .

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    4
    si lo so la struttura non è il massimo ma non la devo modificare perchè appartiene ad un software privato, io devo solo estrapolare dei dati

  7. #7
    Quote Originariamente inviata da andrewkp Visualizza il messaggio
    Ok, quindi la query sarà:

    SELECT o.nome + ' ' + o.cognome AS nomecompleto, o.mansione+' '+o.luogolavoro as lavoro,cm.datacambio +' '+cm.mansione FROM Operai o, cambiomansione cm
    where o.id=cm.id
    "Osservazioni personali"
    Io luogolavoro lo prenderei anche dalla tabella mansioni, in questo modo si vede un cambio del luogo di lavoro da quello specifico.
    Poi strutturerei la query con una left join
    codice:
      SELECT Operai.Nome + ' ' + Operai.Cognome AS OPERAIO,
                  Operai.Mansione + ' ' + Operai.Luogolavoro AS LAVORO_ORIGINALE,
                  Cambiomansione.DataCambio,
                  Cambiomansione.Mansione + ' ' + Cambiomansione.Luogolavoro AS LAVORO_ATTUALE
      FROM Operai
      LEFT JOIN Cambiomansione ON Operai.Idoperaio = Cambiomansione.Idoperaio
    N.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    4
    Grazie a tutti risolto grazie allo spunto di Nettuno95

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.