Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [MySQL] SUM() + TIMEDIFF() limitato #

    Come posso fare per potere gestire la "SUM()" solo con un numero di record da me stabiliti come di solito si fa con il "LIMIT X,X " ???

    codice:
    SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(Ora_End,Ora_Start)))) AS Result FROM tabella
    Mi serve avere "Result" che e' la somma degli intervalli tra "Ora_End e Ora_Start" trasformati in secondi per la somma e poi ritrasformati in "TIME" per avere un TMESTAMP adeguato al progetto,

    pero' mi serve che questo "Result" sia la somma solamente di un dato numero di record e non di tutti i record della tabella,

    di solito si usa LIMIT ma in questo caso non risponde e non da erorre !!!

  2. #2
    La scelta dei record da calcolare la fai con la condizione WHERE.

    ma non hai un timestamp ma hh:mm:ss almeno mi cosi' mi pare.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    OK!

    Ma non vedo come potere gestire il WHERE in questo contesto,

    se io voglio selazionare dal 30° record al 60° record ???

    con il LIMIT farei "LIMIT 30,30" !!!

  4. #4
    Originariamente inviato da w_t
    OK!

    Ma non vedo come potere gestire il WHERE in questo contesto,

    se io voglio selazionare dal 30° record al 60° record ???

    con il LIMIT farei "LIMIT 30,30" !!!
    Una tabella temporanea allora.
    codice:
    CREATE TEMPORARY TABLE temp
    SELECT * FROM tabella
    LIMIT 30, 30;
    
    SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(
    Ora_End,Ora_Start)))) AS Result 
    FROM temp;
    se provi com phpmyadmin lo devi mettere nella stessa finestra di query, con php due mysql_query una a seguire l'altra.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    GRANDE!!!!
    a pennello!!!!


    Scusa ma dato che sei cosi geniale ti dovrei porre un altro quesito,
    devo fare un SELECT nidificato con un altro SELECT, cioe' :


    su "tabella_report" c'e' un solo campo contenente il nome della tabella "tabella_risultante",

    la "tabella_risultante" e' una tabella dove vorrei estrarre tutti i campi ---> (vedi QUERY interna),

    risultato da raggiungere:
    --------------------------------------------
    estrazione di tutti i record di tutte le tabelle "tabella_risultante".

    codice:
    SELECT (SELECT * FROM tabella_risultante) FROM tabella_report
    in PHP farei cosi, ma si puo' ottenere in mySQL ???

    [code]
    <?
    $oComm=mysql_query("SELECT campo FROM tabella",$oConn);
    while($oRead=mysql_fetch_array($oComm)){
    mysql_query("SELECT * FROM ".$oRead["campo"]."",$oConn);
    }
    ?>
    [code]

  6. #6
    Non credo si possa fare solo in SQL. Il nome tabella e' il primo che viene risolto e quindi deve essere presente. Poi viene risolto il where ed anche qui se tu dovessi avere una query annidata il nome tabella deve essere presente.

    Penso che l'unica sia scorrere il result-set come fai tu. Al massimo raccogliere "campo" in un array da scorrere con un foreach... ma la sostanza non cambia.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    TI ringrazio moolto per l'interessamento, prevedevo questa cosa ma speravo in una alternativa, peccato...!

    grazie, ciao!

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.