Query tra due record

di il
8 risposte

Query tra due record

Ho una tabella chiamata annonari, con inseguenti campi:
Ideavi (contatore)
data (data/ora)
Attività' (testo con elenco valori entrata; uscita;)
Iniziò (data/ora)
Fine (data/ora)
Navi (testo)
Anno (numerico)
Vorrei creare una query che mi ricavi la differenza tra la data di entrata e la data di uscita della stessa nave, premesso che la data di entrata e la età di uscita si trovano in due record diversi.
Faccio un esempio dei dati che ho:
Record 1
Campo attività entrata campo iniziò 01/01/2013 07:30:00. Campo fine 01/01/2013 12:10:01 campo navi Sirio
Record 2
Campo attività'. Uscita. Campo iniziò 10/01/2013 07:30:00. Campo fine 10/01/2013 12:10:21 campo navi Sirio
Risultato query
Campo attività' entrata/uscita. Campo iniziò 01/01/2013 07:30:00. Campo fine 10/01/2013 12:10:21 totale giorni 10
Grazie anticipatamente per il vostro aiuto

8 Risposte

  • Re: Query tra due record

    1) Scusa l'ignoranza sull'argomento: di cosa si occupa un database avente una tabella Annonari?
    2) Indipendendemende dal punto 1), la nave Sirio (così come per tutte le altre navi), in tutta la tabella avrà sempre e soltanto 2 record (Entrata/Uscita)? Se sì, non trovo convenevole organizzare il tutto su record diversi.
  • Re: Query tra due record

    Mi correggo, la tabella si chiama unità avvali.
    Ho creato i campi riportati nell'esempio precedente perché' ogni nave ha un campo di entrata iniziale e un'altra campo di entrata finale. Nel secondo record ci sarà' un campo di uscita iniziale e un campo di uscita finale. Purtroppo, secondo le mie conoscenze di access ho impostato così' la tabella, ma non riesco a trovare una soluzione per ottenere i giorni intercorsi tra la data di inizio entrata e la data di fine uscita. Speso di essermi spiegato meglio.
  • Re: Query tra due record

    Scusami, io sono davvero cocciuto, se non spieghi il significato di questi campi, io non colgo il senso della tua domanda. Forse sei stato anche abbastanza chiaro, ma io sono proprio fuori dal tuo ambito lavorativo.
    Che cos'è una entrata iniziale e una finale? Idem per uscita?
  • Re: Query tra due record

    Entrata iniziò e Entrata fine significa cha la nave inizia la sua entrata in bacino in una data giornata e all'ora x e entrata fine significa che nella stessa giornata termina la sua entrata in una determinata ora, ho anche fatto un esempio completo nella mia precedente. Entrata uscita sta a indicare se la nave entra o esce dal bacino. Riportò nuovamente l'esempio
    Entrata inizio 01/05/2013 07:30:10. Entrata fine 01/05/2013 15:31:21
    Uscita iniziò 05/05/2013 07:30:20. Uscita fine. 05/05/2013 16:55:35
    Il risultato della query che vorrei ottenere e' questo qua:
    Entrata inizio 01/05/2013 07:30:10. Uscita fine 05/05/2013 16:55:35. Totale Giorni di permanenza 5.
    Spero di aver fatto comprendere la mia esigenza. Ancora grazie per la vostra pazienza
  • Re: Query tra due record

    Grazie per la spiegazione più terra terra.
    La mia risposta rischia di andare contro qualche regola di normalizzazione, però a conti fatti io vedo soltanto due soluzioni: una tutta orizzontale, una tutta verticale. Mi spiego meglio.

    1) Soluzione orizzontale.
    Per me Entrata inizio/Entrata fine/Uscita inizio/Uscita fine rappresentano un unico ciclo di contabilizzazione, quindi possono essere 4 campi compilabili sullo stesso record.

    2) Soluzione verticale.
    Un campo X dove inserire uno dei quattro valori Entrata inizio/Entrata fine/Uscita inizio/Uscita fine e un campo Data/Ora. In questo modo avresti 4 record per ogni ciclo di permanenza nave nel porto.

    Nel caso 1), la query per calcolare i giorni di permanenza sarebbe molto facile, basta aggiungere un campo calcolato con la seguente sintassi:
    Permanenza: [Uscita fine]-[Entrata inizio]
    Nel caso 2), la tua tabella sarebbe più normalizzata, ma effettuare il calcolo di permanenza risulta più complesso/difficile. Occorre intanto
    - filtrare Nave
    - filtrare nel campo X, Uscita fine AND Entrata Inizio, correndo il rischio però che se la nave Sirio sosta più volte nel porto, la query riporterebbe molti più di 2 record.

    Io consiglio la soluzione orizzontale 1).

    L'organizzazione campi che hai creato tu è una esatta via di mezzo che non è nè carne nè pesce.
  • Re: Query tra due record

    Ti ringrazio, applicando la prima soluzione creando la query tra i campi in orizzontale ottengo la permanenza dei giorni della nave, come posso eliminare o ridurre i 12 decimali.
    Scusami se sono "rompi" sarei più' contento se otterrei lo stesso risultato con una query tra due campi di due record differenti. Ti spiego il perché' la nave potrebbe uscire anche dopo sei mese dalla sua entrata e io devo riempire i due campi vuoti registrati sei mesi prima, mentre lavorando con un record che registra i dati di entrata e uno che registra i dati di uscita, quest' ultima registrazione si farà' solo alla data interessata.
  • Re: Query tra due record

    Ho risolto l'eliminazione dei decimali. Se risolvessi anche l'altro problema prospettanti, sarei più' contento. Grazie
  • Re: Query tra due record

    kar61 ha scritto:


    Ti spiego il perché' la nave potrebbe uscire anche dopo sei mese dalla sua entrata e io devo riempire i due campi vuoti registrati sei mesi prima, mentre lavorando con un record che registra i dati di entrata e uno che registra i dati di uscita, quest' ultima registrazione si farà' solo alla data interessata.
    Disposizione orizzontale: Per Access questo non costituisce alcun problema. Riempire campi di record già esistenti, si può fare tranquillamente.
    Disposizione verticale: La query da costruire impone un groviglio di espressioni talmente complesso che...prova a dare un'occhiata a questo link
    http://office.microsoft.com/it-it/access-help/trovare-i-record-con-i-primi-o-gli-ultimi-valori-in-un-campo-HP005188033.aspx
    io non ci ho capito nulla. Mi fermo qui.
Devi accedere o registrarti per scrivere nel forum
8 risposte