Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591

    [php-mysql] dati da 3 tabelle con date

    Scusate per il titolo ma sono tipo 3 ore che penso: come lo titolo questo 3d?
    allora ho un gestionale per una pizzeria con consegna a domicilio e mi hanno chiesto di fare un report sui lavoranti.
    dovrei far vedere quanto lavorano i "fattorini". ma come?
    Dalla tabella dell'anagrafica recupero i dati.
    Dalla tabella del calendario ho gli orari giornalieri dei fattorini, i turni diciamo.
    quindi uno può lavorare dalle 16 alle 19 e un altro dalle 19 alle 23 un altro dalle 17 alle 22 eccetera
    Ma dalla tabella degli ordini, dovrei recuperare la prima e l'ultima consegna nel giorno: la prima � il campo orario_uscita, l'altro è il campo orario_rientro, ma ovviamente non è lo stesso record..
    Vorrei evitare di fare 60 query, perchè di questo si tratterebbe, facendo un report per fattorino mensile.. (query recupero dati anagrafici + query per i turni + 2 query per recuperare 1° e ultimo record x 30 giorni)
    Ecco quello che chiedo � un aiuto per ottimizzare le query, per farne POCHE.. magari creando degli array?

    Ringrazio chiunque voglia/possa darmi una mano

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Come organizzare il recupero dati da un database, quindi quali query eseguire, è un argomento che va nella sezione database, non PHP.
    Sposto.

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da telegio Visualizza il messaggio
    Scusate per il titolo ma sono tipo 3 ore che penso: come lo titolo questo 3d?
    allora ho un gestionale per una pizzeria con consegna a domicilio e mi hanno chiesto di fare un report sui lavoranti.
    dovrei far vedere quanto lavorano i "fattorini". ma come?
    Dalla tabella dell'anagrafica recupero i dati.
    Dalla tabella del calendario ho gli orari giornalieri dei fattorini, i turni diciamo.
    quindi uno può lavorare dalle 16 alle 19 e un altro dalle 19 alle 23 un altro dalle 17 alle 22 eccetera
    Ma dalla tabella degli ordini, dovrei recuperare la prima e l'ultima consegna nel giorno: la prima � il campo orario_uscita, l'altro è il campo orario_rientro, ma ovviamente non è lo stesso record..
    Vorrei evitare di fare 60 query, perchè di questo si tratterebbe, facendo un report per fattorino mensile.. (query recupero dati anagrafici + query per i turni + 2 query per recuperare 1° e ultimo record x 30 giorni)
    Ecco quello che chiedo � un aiuto per ottimizzare le query, per farne POCHE.. magari creando degli array?

    Ringrazio chiunque voglia/possa darmi una mano
    Non capisco la storia delle 60 query.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    "un report sui lavoranti" non vuol dire niente. fa' un esempio preciso (o chiedi al tuo cliente di dirti chiaramente cosa vuole) e poi ne riparliamo

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Come organizzare il recupero dati da un database, quindi quali query eseguire, � un argomento che va nella sezione database, non PHP.
    Sposto.
    intanto chiedo scusa, la confusione era ampia.. anche se tutt'ora non so se io abbia bisogno di un aiuto PHP o MYSQL

    quello che dovrei fare � appunto il report orario dei lavoranti.
    Quindi prendere orario di arrivo e orario di uscita e fare "la differenza", in minuti.

    La cosa delle 60 query @badaze � per questo:
    ho strutturato, ora, la pagina cos�:
    query recupero calendario e dati anagrafici:
    Codice PHP:
    SELECT FROM  `calendarioLEFT JOIN anagrafica_fattorini ON id_fatt fatt_id WHERE MONTHda ) = '$mese' AND YEARda ) = '$anno' AND `id_fatt` = '$id_fatt' 
    Con questa recupero il singolo fattorino nel mese e anno da GET.
    se non sono settati nella URL mese e anno non mostra nulla.
    Quindi faccio il ciclo dei giorni lavorati della query sopra.
    Nella tabella degli ordini ho un campo data, oltre ai timestamp di partenza e rientro dei singoli fattorini, quindi per sapere a che ora un fattorino � uscito la prima volta dentro il ciclo faccio la query :
    Codice PHP:
    <?php do {
    $prima_consegna substr($row_orario['da'], 010);    $query_prima_consegna "SELECT ord_partito FROM  `ordini` WHERE ord_giorno = '$prima_consegna' AND `ord_fattorino` = '$id_fatt'order by ord_partito ASC LIMIT 1";$prima_consegna mysql_query($query_prima_consegna$con) or die(mysql_error());$row_prima_consegna mysql_fetch_assoc($prima_consegna);echo $row_prima_consegna['ord_partito'] ;

    } while (
    $row_orario mysql_fetch_assoc($orario)); ?>
    e per sapere l'ultima consegna che ha fatto faccio un altra query sempre nel ciclo
    Codice PHP:
    SELECT ord_rientrato FROM  `ordiniWHERE ord_giorno '$prima_consegna' AND `ord_fattorino` = '$id_fatt'order by ord_rientrato DESC LIMIT 1 
    evito di mettere di questo tutto il resto del codice che tanto � inutile.
    Ecco, se un fattorino ha lavorato 20 sere questa pagina fa
    20x2 + 1 query..
    vorrei, se possibile, almeno fargliene fare la met�.. non dico una sola perch� mi sembra improponibile..

    spero di essere stato chiaro, e auguro a TUTTI tante cose belle per l'anno nuovo

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Una query che venga utilizzata 1 o 20 volte è una sola query. Solo i parametri cambiano.

    Chi dovrà utlizzare la tua pagina ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    BEH se metti una query in un ciclo di 20 record sono 20 query.. che è quello che ho fatto io.. ma non credo ci sia scampo..
    forse giusto prendere il primo e l'ultimo record, ma campi diversi, dalla stessa query per dimezzarle..

    l'utilizzatore è il "padrone" della pizzeria, che vuole vedere l'andamento delle prime e ultime consegne rispetto agli orari in cui i fattorini devono arrivare / andare via.

  8. #8
    quindi un report del tipo

    giorno ---- prima consegna ---- ultima consegna
    01.01.17 ----- 18.30 ------- -- -- -- 22.30
    02.01.17 ----- 18.45 ------ -- -- - -- 21.10

    ????

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.