Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38

    inserire record per data ora ultima

    Un saluto a tutti ,il mio problema e' il seguente ,ho due tabelle composte da 6 campi ciascuna
    la prima tabella che ha per nome "utenti" ha i seguenti campi:
    "id - nome - tessera_numero - data - orario entrata - orario uscita"
    la chiave primaria è id- AI
    per ogni utente che entra e poi esce ho un'inserimento nel db ,se l'utente rientra ho una nuova entrata con un orario diverso mantenendo nel db i record precedenti,
    ora ho creato la seconda tabella chiamata "attuale" la chiave primaria e' "tessera numero" e non e' AI i campi sono gli stessi della prima,dove con un comando del genere
    "INSERT INTO attuale(id, nome, tessera_numero,data,orario entrata,orario uscita)
    SELECT id, nome, tessera_numero,data,orario entrata,orario uscita FROM utenti"
    prendo i dati dalla prima riempiendo la seconda ,il problema e' che il mio scopo sarebbe quello di prendere per ogni utente dalla prima tabella l'ultimo record per data ora ,ma non saprei proprio come impostare la query,qualcuno potrebbe darmi una mano?
    Grazie per l'attenzione un saluto

  2. #2
    Prima di darti suggerimenti, puoi dire a cosa ti serve avere una seconda tabella uguale alla prima?

  3. #3
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38
    Quote Originariamente inviata da optime Visualizza il messaggio
    Prima di darti suggerimenti, puoi dire a cosa ti serve avere una seconda tabella uguale alla prima?
    si giusto avevo omesso il fine ,la prima tabella la visualizzo tramite una pagina web che mi deve dare tipo uno storico di tutte le entrate e le uscite giornaliere di ogni singolo utente ,mentre la seconda tabella dovrebbe visualizzare solo l'ultimo evento entrata uscita di ogni singolo utente.

  4. #4
    Non c’è bisogno di una nuova tabella, basta interrogare convenientemente la prima. Sennò cosa fai, una nuova tabella per ogni nuova visualizzazione?

  5. #5
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38
    Quote Originariamente inviata da optime Visualizza il messaggio
    Non c’è bisogno di una nuova tabella, basta interrogare convenientemente la prima. Sennò cosa fai, una nuova tabella per ogni nuova visualizzazione?
    sicuramente hai ragione ho scelto la strada piu' complicata e meno logica ,ma interrogare convenientemente vale a dire?

  6. #6
    Quote Originariamente inviata da ric@66 Visualizza il messaggio
    sicuramente hai ragione ho scelto la strada piu' complicata e meno logica ,ma interrogare convenientemente vale a dire?
    fare una SELECT con una GROUP BY per esempio? Qual è il tuo livello di conoscenza di SQL?

  7. #7
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38
    Quote Originariamente inviata da optime Visualizza il messaggio
    fare una SELECT con una GROUP BY per esempio? Qual è il tuo livello di conoscenza di SQL?
    conoscenza da principiante ,pero' ci vorrei provare con il vostro aiuto ,secondo tepotrebbe andare una roba
    del genere ?
    SELECT id,MAX( orario entrata)FROM utentiGROUPBY id;
    grazie e scusa ancora per il disturbo



  8. #8
    Quote Originariamente inviata da ric@66 Visualizza il messaggio
    conoscenza da principiante ,pero' ci vorrei provare con il vostro aiuto ,secondo tepotrebbe andare una roba
    del genere ?
    SELECT id,MAX( orario entrata)FROM utentiGROUPBY id;
    grazie e scusa ancora per il disturbo
    per prima cosa non devi scusarti: tutti siamo stati principianti, e il forum serve ad aiutare.

    Per la query, io andrei anche oltre, così
    codice:
    SELECT 
       id,
          MAX(nome),
          MAX(tessera_numero),
          MAX(CONCAT(data,' ', orario entrata)),
          MAX(CONCAT(data,' ', orario uscita))
    FROM
       utenti
    GROUP BY 
       id;
    
    le due MAX CONCAT servono ad avere anche la data assieme agli orari, altrimenti gli orari da soli servono a ben poco ( MAX(orario entrata) ti darebbe l'ora in cui la persona è entrata più tardi in assoluto, indipendentemente dalla data ); ho usato CONCAT, ma potrebbe non funzionare, non hai indicato con quale db stai lavorando

    in più, ti segnalo tre link dove troverai cose interessanti; è roba di vent'anni fa, ma SQL è sempre quello

    e trascura anche che è per Access, il grosso è buono con quasi tutti i db

  9. #9
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38
    Quote Originariamente inviata da optime Visualizza il messaggio
    per prima cosa non devi scusarti: tutti siamo stati principianti, e il forum serve ad aiutare.

    Per la query, io andrei anche oltre, così
    codice:
    SELECT 
       id,
          MAX(nome),
          MAX(tessera_numero),
          MAX(CONCAT(data,' ', orario entrata)),
          MAX(CONCAT(data,' ', orario uscita))
    FROM
       utenti
    GROUP BY 
       id;
    
    le due MAX CONCAT servono ad avere anche la data assieme agli orari, altrimenti gli orari da soli servono a ben poco ( MAX(orario entrata) ti darebbe l'ora in cui la persona è entrata più tardi in assoluto, indipendentemente dalla data ); ho usato CONCAT, ma potrebbe non funzionare, non hai indicato con quale db stai lavorando

    in più, ti segnalo tre link dove troverai cose interessanti; è roba di vent'anni fa, ma SQL è sempre quello

    e trascura anche che è per Access, il grosso è buono con quasi tutti i db
    appena torno a casa provo subito,grazie per i link che leggo subito

  10. #10
    Utente di HTML.it L'avatar di ric@66
    Registrato dal
    Oct 2011
    Messaggi
    38
    Perfetto funziona a meraviglia,grazie per il tuo prezioso aiuto

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 © 2024 vBulletin Solutions, Inc. All rights reserved.