Help Sql somma orari

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buonasera a tutti, giusto per l'ultimo dell'anno volevo chiedervi una info semplice semplice. Ho scritto una query sql che di per se funziona senza problemi, ve la riporto di seguito e poi vi spiego la mia domanda:

SQL:
SELECT
                I.data_intervento,
                I.durata_intervento,
                SEC_TO_TIME(SUM(TIME_TO_SEC(I.durata_intervento))) AS tot_durata,
                dipendenti.cognome_dipendente,
                dipendenti.nome_dipendente,
                stampi.part_number_macchina,
                stampi.descrizione_macchina,
                causale_intervento.descr_causale,
                componenti_stampi.descrizione_componente,
                tipo_manutenzione.descr_tipo_manutenzione
                from interventi AS I
                LEFT JOIN dipendenti ON I.id_op_intervento=dipendenti.id_dipendente
                LEFT JOIN stampi ON I.id_stampo_intervento=stampi.id_macchina
                LEFT JOIN causale_intervento ON I.id_causale_intervento=causale_intervento.id_causale
                LEFT JOIN componenti_stampi ON I.id_parte_intervento=componenti_stampi.id_componente
                LEFT JOIN tipo_manutenzione ON I.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione
              where 1=1

Banalmente vorrei cercare tutte le righe corrispondenti al criterio di ricerca che ho inserito e contemporaneamente sommare il campo "durata_intervento" in modo da avere una tabella con i vari interventi e alla fine della tabella avere i totali. Ovviamente questa cosa non accade, la funzione di somma fa si che io veda solo una riga delle "n" righe presenti nel Db con il totale (corretto) delle varie durate. C'è un modo per gestire questa cosa direttamente in sql oppure devo sommare i dati con del codice Php?

Grazie a tutti e.... BUON ANNOOOOO

E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
SQL:
select * from (
    select
        1 as posizione,
        ......... senza sum
    UNION ALL
    select
        2 as posizione,
        ......... con sum
) t
order by ...., posizione, ....

vedi se riesci a interpretare come ho scritto la query
ricorda, le colonne delle due select interne devono avere nomi uguali, ricorri agli alias "AS nome"
non dimenticare quella t dopo la parentesi tonda chiusa
order by va indicato per elencare le righe come serve

buon anno 2023
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Ti ringrazio infinitamente... Non credo di riuscire ad interpretare la query ma appena riesco (spero domani) me la studio un po' e ti aggiorno...grazie mille in anticipo!!!
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
SQL:
select * from (
    select
        1 as posizione,
        ......... senza sum
    UNION ALL
    select
        2 as posizione,
        ......... con sum
) t
order by ...., posizione, ....

vedi se riesci a interpretare come ho scritto la query
ricorda, le colonne delle due select interne devono avere nomi uguali, ricorri agli alias "AS nome"
non dimenticare quella t dopo la parentesi tonda chiusa
order by va indicato per elencare le righe come serve

buon anno 2023
Buonasera Marino, volevo dirti che purtroppo non riesco a tirare fuori i dati come credevo, sicuramente sbaglio qualcosa dato le varei join che ho... potresti gentilmente farmi 1 esempio o darmi qualche link dove poter capire la soluzione al mio problema?

Letta come l'hai scritta va bene, ma poi mi perdo sorry... se riesci a partire dal mio esempio mi daresti una grande mano... (nel frattempo continuo a fare qualche prova, se riesco a risolvere posto la soluzione ma ne dubito)


Grazie in anticipo
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Ho fatto una cosa che funziona... ma non so se è il modo giusto... puoi darci uno sguardo? vorrei avere un codice "pulito" il più possibile e soprattutto imparo una cosa nel modo corretto...

SQL:
SELECT * FROM (
SELECT 1 AS posizione,
                I.id_intervento,
                I.data_intervento,
                I.durata_intervento,
                dipendenti.cognome_dipendente,
                dipendenti.nome_dipendente,
                stampi.part_number_macchina,
                stampi.descrizione_macchina,
                causale_intervento.descr_causale,
                componenti_stampi.descrizione_componente,
                tipo_manutenzione.descr_tipo_manutenzione
                from interventi AS I
                LEFT JOIN dipendenti ON I.id_op_intervento=dipendenti.id_dipendente
                LEFT JOIN stampi ON I.id_stampo_intervento=stampi.id_macchina
                LEFT JOIN causale_intervento ON I.id_causale_intervento=causale_intervento.id_causale
                LEFT JOIN componenti_stampi ON I.id_parte_intervento=componenti_stampi.id_componente
                LEFT JOIN tipo_manutenzione ON I.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione
             UNION ALL
        
    SELECT 2 AS posizione,
    F.id_intervento,
                F.data_intervento,               
                SEC_TO_TIME(SUM(TIME_TO_SEC(F.durata_intervento))) AS tot_durata,
                dipendenti.cognome_dipendente,
                dipendenti.nome_dipendente,
                stampi.part_number_macchina,
                stampi.descrizione_macchina,
                causale_intervento.descr_causale,
                componenti_stampi.descrizione_componente,
                tipo_manutenzione.descr_tipo_manutenzione
                from interventi AS F
                LEFT JOIN dipendenti ON F.id_op_intervento=dipendenti.id_dipendente
                LEFT JOIN stampi ON F.id_stampo_intervento=stampi.id_macchina
                LEFT JOIN causale_intervento ON F.id_causale_intervento=causale_intervento.id_causale
                LEFT JOIN componenti_stampi ON F.id_parte_intervento=componenti_stampi.id_componente
                LEFT JOIN tipo_manutenzione ON F.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione
                     )t
    where 1=1

e comunque.... SEI STATO DI ENORME AIUTO!!!!!!
Grazie ancora
E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
probabilmente stai lavorando con mySQL,
e se la query funziona non la toccherei
per informazione, se lavorasse con Microsoft SQL presenterebbe diversi errori

considera che non conosco le tabelle ed i dati su cui lavora
suggerirti miglioramenti sarebbe .... pericoloso

certo a prima vista, soddisfacendo tutte le regole SQL, si potrebbe migliorare molto
magari portando tutte le join sulla select più esterna ( la tabella si chiama "t" giusto quella dopo la parentesi, t.nomecolonna )
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
La query funziona perfettamente e non la tocco se non ci sono errori grossolani... Detto ciò...mi è rimasto solo un problemino,ora se ho 2 record come risultato e ogni record ha es. 8ore di intervento la query mi tira fuori le due righe come "posizione 1" più la terza con la somma delle ore "posizione 2"...invece io la terza non la vorrei vedere ma vorrei prendere solo la somma. Non so se sono stato abbastanza chiaro.

Saluti
E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ti faccio un esempio per quello che ho capito,

nella select con posizione 2, invece di

dipendenti.cognome_dipendente

metti

" " as cognome_dipendente ( tra apici uno spazio )

ripeti " ", su ciascuna colonna che non ti serve e togli tutte le join

eventualmente invece dello spazio puoi mettere la parola "TOTALE" su una colonna


ok ?
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Eccomi... Diciamo che funziona, ottengo su posizione 2 un record con la sola somma... e già potrebbe andare... ma giusto per capire, non esiste un modo per nascondere anche quel singolo record e usare solo la sommatoria?
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
dovresti fare un esempio concreto, dati di partenza e risultato voluto, detto così non capisco cosa vuoi ottenere
Ciao Marino, scusa il ritardo...hai perfettamente ragione. Provo a farti un semplice esempio di quello che intendo dire:

Tab.1
Id_intervento
data_intervento
tempo_intervento
causa_intervento

Supponendo che questa tabella contiene svariati record voglio cercare tutti gli interventi che hanno come causa "rottura" e popolare una tabella. Il risultato atteso è il seguente:

ID INTERVENTO DATA INTERVENTO TEMPO INTERVENTO CAUSA INTERVENTO AZIONE
123456 01-01-2023 04:20 Rottura Dettaglio
123654 02-01-2023 03:30 Rottura Dettaglio
123465 03-01-2023 06:20 Rottura Dettaglio

Totale interventi:3 Totale ore: 14:10


Ovviamente come hai potuto vedere ho parecchie tabelle ma ho evitato di incasinare il post (spero di aver fatto bene) e ti ho riportato un esempio pratico. Il risultato della query deve essere l'elenco degli interventi e alla fine del foreach vorrei inserire i due totali (interventi effettuati e totale ore (hh:mm)).

Spero di essermi spiegato, e grazie per la pazienza.

Saluti
E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
risultato
1673030140722.png


query
SQL:
SELECT
  Id_intervento
, data_intervento
, minuti
, causa_intervento
, dettaglio
FROM (
SELECT
  1 as posizione
, Id_intervento
, data_intervento
, tempo_intervento  as tempo
, DATEDIFF(MINUTE, '0:00:00', tempo_intervento) as minuti
, causa_intervento
, dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
UNION ALL
SELECT
  2 as posizione
, count(*)              as Id_intervento
, ' '                   as data_intervento
, ' '                   as tempo
, SUM(DATEDIFF(MINUTE, '0:00:00', tempo_intervento)) as minuti
, ' '                   as causa_intervento
, ' '                   as dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
) t
ORDER BY posizione

dovrai sostituire la funzione "datediff" con quelle che hai già usato tu
(ho fatto le prove con MS SQL)

ho lasciato i minuti ma puoi, anche in questo caso, convertire in ore:minuti
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
risultato
Vedi l'allegato 8146

query
SQL:
SELECT
  Id_intervento
, data_intervento
, minuti
, causa_intervento
, dettaglio
FROM (
SELECT
  1 as posizione
, Id_intervento
, data_intervento
, tempo_intervento  as tempo
, DATEDIFF(MINUTE, '0:00:00', tempo_intervento) as minuti
, causa_intervento
, dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
UNION ALL
SELECT
  2 as posizione
, count(*)              as Id_intervento
, ' '                   as data_intervento
, ' '                   as tempo
, SUM(DATEDIFF(MINUTE, '0:00:00', tempo_intervento)) as minuti
, ' '                   as causa_intervento
, ' '                   as dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
) t
ORDER BY posizione

dovrai sostituire la funzione "datediff" con quelle che hai già usato tu
(ho fatto le prove con MS SQL)

ho lasciato i minuti ma puoi, anche in questo caso, convertire in ore:minuti
Sei un drago... Grazie mille... È perfetta e funziona alla grande!!!
Ancor più lodevole è la tua pazienza... Grazie ancora!
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
risultato
Vedi l'allegato 8146

query
SQL:
SELECT
  Id_intervento
, data_intervento
, minuti
, causa_intervento
, dettaglio
FROM (
SELECT
  1 as posizione
, Id_intervento
, data_intervento
, tempo_intervento  as tempo
, DATEDIFF(MINUTE, '0:00:00', tempo_intervento) as minuti
, causa_intervento
, dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
UNION ALL
SELECT
  2 as posizione
, count(*)              as Id_intervento
, ' '                   as data_intervento
, ' '                   as tempo
, SUM(DATEDIFF(MINUTE, '0:00:00', tempo_intervento)) as minuti
, ' '                   as causa_intervento
, ' '                   as dettaglio
FROM interventi
WHERE causa_intervento = 'Rottura'
) t
ORDER BY posizione

dovrai sostituire la funzione "datediff" con quelle che hai già usato tu
(ho fatto le prove con MS SQL)

ho lasciato i minuti ma puoi, anche in questo caso, convertire in ore:minuti
Sei un drago... Grazie mille... È perfetta e funziona alla grande!!!
Ancor più lodevole è la tua pazienza... Grazie ancora!
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buonasera a tutti... Marino... io provo a chiederti ancora una info, purtroppo come vedi riesco a fare queste cose a tempo perso e in ore tarde.... ma va benissimo cosi... Volevo chiederti, sempre riguardo questa sezione di codice, ho un problema quando provo a filtrare i dati per range di date (scusa il gioco di parole). Ti riporto un piccolo esempio:

PHP:
if (($data_da !="" ) && ($data_a !="" )) {

      $query_dinamica.=" and data_intervento BETWEEN :data_da and :data_a";
      $parametri[':data_da'] = $data_da;
      $parametri[':data_a'] = $data_a;

      $query_dinamica2.=" and data_intervento BETWEEN :data_da2 and :data_a2";
      $parametri2[':data_da2'] = $data_da;
      $parametri2[':data_a2'] = $data_a;
      
        }

Con questo codice ovviamente verifico che le variabili contengono date e nel caso alla famosa query "where 1=1" aggiungo un pezzo di codice...e cosi via per altri 5/6 campi. Funzionano tutti, tranne che il range di date. Ho provato a convertire i valori in stringa... ma non cambia nulla.

PHP:
$sql2="  SELECT * FROM ( ";
          $sql2.="SELECT 1 AS posizione,";
                  $sql2.="I.id_intervento,";
                  $sql2.="I.id_op_intervento,";
                  $sql2.="I.id_stampo_intervento,";
                  $sql2.="I.id_analisi_p_l,";
                  $sql2.="I.stato_intervento,";
                  $sql2.="I.data_intervento,";
                  $sql2.="I.durata_intervento,";
                  $sql2.="dipendenti.cognome_dipendente,";
                  $sql2.="dipendenti.nome_dipendente,";
                  $sql2.="stampi.part_number_macchina,";
                  $sql2.="stampi.descrizione_macchina,";
                  $sql2.="causale_intervento.descr_causale,";
                  $sql2.="componenti_stampi.descrizione_componente,";
                  $sql2.="tipo_manutenzione.descr_tipo_manutenzione,";
                  $sql2.="analisi_p_livello.descrizione ";
                  $sql2.="from interventi AS I ";
                  $sql2.="LEFT JOIN dipendenti ON I.id_op_intervento=dipendenti.id_dipendente ";
                  $sql2.="LEFT JOIN stampi ON I.id_stampo_intervento=stampi.id_macchina ";
                  $sql2.="LEFT JOIN causale_intervento ON I.id_causale_intervento=causale_intervento.id_causale ";
                  $sql2.="LEFT JOIN componenti_stampi ON I.id_parte_intervento=componenti_stampi.id_componente ";
                  $sql2.="LEFT JOIN tipo_manutenzione ON I.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione ";
                  $sql2.="LEFT JOIN analisi_p_livello ON I.id_analisi_p_l=analisi_p_livello.id_valore ";
                  $sql2.="where 1=1 ". $query_dinamica2 ;

                  $sql2.=" UNION ALL";
          
                  $sql2.=" SELECT 2 AS posizione, count(*)";
                  $sql2.=" as id_intervento, ";
                  $sql2.="\" \" as data_intervento,";
                  $sql2.="\" \" as id_op_intervento,";
                  $sql2.="\" \" as id_stampo_intervento,";
                  $sql2.=" \" \" as id_analisi_p_l,";
                  $sql2.="\" \" as stato_intervento,";             
                  $sql2.=" SEC_TO_TIME(SUM(TIME_TO_SEC(F.durata_intervento))) AS tot_durata,";
                  $sql2.="\" \" as cognome_dipendente,";
                  $sql2.="\" \" as nome_dipendente,";
                  $sql2.="\" \" as part_number_macchina,";
                  $sql2.="\" \" as descrizione_macchina,";
                  $sql2.="\" \" as descr_causale,";
                  $sql2.="\" \" as descrizione_componente,";
                  $sql2.="\" \" as descr_tipo_manutenzione,";
                  $sql2.="\" \" as descrizione ";
                  $sql2.="from interventi AS F ";
                  $sql2.="LEFT JOIN dipendenti ON F.id_op_intervento=dipendenti.id_dipendente ";
                  $sql2.="LEFT JOIN stampi ON F.id_stampo_intervento=stampi.id_macchina ";
                  $sql2.="LEFT JOIN causale_intervento ON F.id_causale_intervento=causale_intervento.id_causale ";
                  $sql2.="LEFT JOIN componenti_stampi ON F.id_parte_intervento=componenti_stampi.id_componente ";
                  $sql2.="LEFT JOIN tipo_manutenzione ON F.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione ";
                  $sql2.="LEFT JOIN analisi_p_livello ON F.id_analisi_p_l=analisi_p_livello.id_valore ";
                  $sql2.=" where 1=1 ". $query_dinamica. ")t ORDER BY posizione";

LA query oramai la conosci benissimo, ma te la riporto per completezza, e di seguito il bind dei parametri:

PHP:
 $query2 = $dbh -> prepare($sql2);                                     
 $query2->execute($parametri);
 $results2=$query2->fetchAll(PDO::FETCH_OBJ);

Ho testato la query con Mysql, se alle due date inserisco l'apice funziona, altrimenti no, ma non so come gestire questa cosa con Php.

Sai darmi qualche dritta??? Grazie mille

E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
se alle due date inserisco l'apice funziona
tutti i valori non strettamente numerici devono essere delimitati da apici
esempio, 'prova testo', '2023-01-22'
quando scrivi in php usa una regola, la stringa php viene delimitata da virgolette ed al suo interno degli elementi possono essere delimitati da apici alla necessità

SQL:
$sql2 = "SELECT * FROM ( "
      . "SELECT 1 AS posizione,"
      . "I.id_intervento,"
      . "I.id_op_intervento,"
      . "I.id_stampo_intervento,"
      . "I.id_analisi_p_l,"
      . "I.stato_intervento,"
      . "I.data_intervento,"
      . "I.durata_intervento,"
      . "dipendenti.cognome_dipendente,"
      . "dipendenti.nome_dipendente,"
      . "stampi.part_number_macchina,"
      . "stampi.descrizione_macchina,"
      . "causale_intervento.descr_causale,"
      . "componenti_stampi.descrizione_componente,"
      . "tipo_manutenzione.descr_tipo_manutenzione,"
      . "analisi_p_livello.descrizione "
      . "from interventi AS I "
      . "LEFT JOIN dipendenti ON I.id_op_intervento=dipendenti.id_dipendente "
      . "LEFT JOIN stampi ON I.id_stampo_intervento=stampi.id_macchina "
      . "LEFT JOIN causale_intervento ON I.id_causale_intervento=causale_intervento.id_causale "
      . "LEFT JOIN componenti_stampi ON I.id_parte_intervento=componenti_stampi.id_componente "
      . "LEFT JOIN tipo_manutenzione ON I.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione "
      . "LEFT JOIN analisi_p_livello ON I.id_analisi_p_l=analisi_p_livello.id_valore "
      . "where 1=1 " . $query_dinamica2

      . " UNION ALL"
         
      . " SELECT 2 AS posizione,"
      . " count(*) as id_intervento,"
      . " ' ' as data_intervento,"
      . " ' ' as id_op_intervento,"
      . " ' ' as id_stampo_intervento,"
      . " ' ' as id_analisi_p_l,"
      . " ' ' as stato_intervento,"            
      . " SEC_TO_TIME(SUM(TIME_TO_SEC(F.durata_intervento))) AS tot_durata,"
      . " ' ' as cognome_dipendente,"
      . " ' ' as nome_dipendente,"
      . " ' ' as part_number_macchina,"
      . " ' ' as descrizione_macchina,"
      . " ' ' as descr_causale,"
      . " ' ' as descrizione_componente,"
      . " ' ' as descr_tipo_manutenzione,"
      . " ' ' as descrizione "
      . "from interventi AS F "
      . "LEFT JOIN dipendenti ON F.id_op_intervento=dipendenti.id_dipendente "
      . "LEFT JOIN stampi ON F.id_stampo_intervento=stampi.id_macchina "
      . "LEFT JOIN causale_intervento ON F.id_causale_intervento=causale_intervento.id_causale "
      . "LEFT JOIN componenti_stampi ON F.id_parte_intervento=componenti_stampi.id_componente "
      . "LEFT JOIN tipo_manutenzione ON F.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione "
      . "LEFT JOIN analisi_p_livello ON F.id_analisi_p_l=analisi_p_livello.id_valore "
      . " where 1=1 " . $query_dinamica . ")t ORDER BY posizione";
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Marino ho modificato la query come da te suggerito e ok... inoltre ho provato anche a mettere le due date tra apici in questo modo:
PHP:
"'".$_POST['data_da']."'"
ma purtroppo non risolvo il mio problema. Ho capito bene? intendevi questo?

Grazie
E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
prova sostituendo in questo modo

PHP:
if (($data_da !="" ) && ($data_a !="" )) {

      $query_dinamica.=" and (data_intervento BETWEEN ? and ?)";
      $parametri = array($data_da, $data_a);

      $query_dinamica2.=" and (data_intervento BETWEEN ? and ?)";
      $parametri = array($data_da, $data_a);
}

devi sistemare gli altri parametri allo stesso modo

l' array $parametri li dovrà contenere in sequenza come da script soprastante
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Sto pensando di togliere come ricerca i campi data... Ho fatto le modifiche che mi hai suggerito in questo modo:
PHP:
 if (($data_da !="" ) && ($data_a !="" )) {

      $query_dinamica.=" and (data_intervento BETWEEN ? and ?)";
      $parametri = array($data_da, $data_a);

      $query_dinamica2.=" and (data_intervento BETWEEN ? and ?)";
      $parametri = array($data_da, $data_a);
      
      
        }
      
    if ($componente !="" )  {
      $query_dinamica.=" and (id_parte_intervento=?)";
      $parametri = array($componente);
      $query_dinamica2.=" and (id_parte_intervento=?)";
      $parametri = array($componente);   
        }

    if ($stampo !="" )  {
      $query_dinamica.=" and (id_stampo_intervento=?)";
      $parametri = array($stampo);
      $query_dinamica2.=" and (id_stampo_intervento=?)";
      $parametri = array($stampo);       
        }

    if ($analisi !="" )  {
      $query_dinamica.=" and (id_analisi_p_l=?)";
      $parametri = array($analisi);
      $query_dinamica2.=" and (id_analisi_p_l=?)";
      $parametri = array($analisi);

        }
 
    if ($tipo_manutenzione !="" )  {
      $query_dinamica.=" and id_tipo_intervento=?";
      $parametri = array($tipo_manutenzione);
      $query_dinamica2.=" and id_tipo_intervento=?";
      $parametri = array($tipo_manutenzione);   
        }
        
      $sql2="  SELECT * FROM ( "
         ."SELECT 1 AS posizione,"
         ."I.id_intervento,"
         ."I.id_op_intervento,"
         ."I.id_stampo_intervento,"
         ."I.id_analisi_p_l,"
         ."I.stato_intervento,"
         ."I.data_intervento,"
         ."I.durata_intervento,"
         ."I.esito_intervento,"
         ."dipendenti.cognome_dipendente,"
         ."dipendenti.nome_dipendente,"
         ."stampi.part_number_macchina,"
         ."stampi.descrizione_macchina,"
         ."causale_intervento.descr_causale,"
         ."componenti_stampi.descrizione_componente,"
         ."tipo_manutenzione.descr_tipo_manutenzione,"
         ."analisi_p_livello.descrizione "
         ."from interventi AS I "
         ."LEFT JOIN dipendenti ON I.id_op_intervento=dipendenti.id_dipendente "
         ."LEFT JOIN stampi ON I.id_stampo_intervento=stampi.id_macchina "
         ."LEFT JOIN causale_intervento ON I.id_causale_intervento=causale_intervento.id_causale "
         ."LEFT JOIN componenti_stampi ON I.id_parte_intervento=componenti_stampi.id_componente "
         ."LEFT JOIN tipo_manutenzione ON I.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione "
         ."LEFT JOIN analisi_p_livello ON I.id_analisi_p_l=analisi_p_livello.id_valore "
         ."where 1=1 ". $query_dinamica2

         ." UNION ALL"
        
         ." SELECT 2 AS posizione, count(*)"
         ." as id_intervento, "
         ."' '  as data_intervento,"
         ."' '  as id_op_intervento,"
         ."' '  as id_stampo_intervento,"
         ."' '  as id_analisi_p_l,"
         ."' '  as stato_intervento,"           
         ."' '  as esito_intervento,"
         ." SEC_TO_TIME(SUM(TIME_TO_SEC(F.durata_intervento))) AS tot_durata,"
         ."' '  as cognome_dipendente,"
         ."' '  as nome_dipendente,"
         ."' '  as part_number_macchina,"
         ."' '  as descrizione_macchina,"
         ."' '  as descr_causale,"
         ."' '  as descrizione_componente,"
         ."' '  as descr_tipo_manutenzione,"
         ."' '  as descrizione "
         ."from interventi AS F "
         ."LEFT JOIN dipendenti ON F.id_op_intervento=dipendenti.id_dipendente "
         ."LEFT JOIN stampi ON F.id_stampo_intervento=stampi.id_macchina "
         ."LEFT JOIN causale_intervento ON F.id_causale_intervento=causale_intervento.id_causale "
         ."LEFT JOIN componenti_stampi ON F.id_parte_intervento=componenti_stampi.id_componente "
         ."LEFT JOIN tipo_manutenzione ON F.id_tipo_intervento=tipo_manutenzione.id_tipo_manutenzione "
         ."LEFT JOIN analisi_p_livello ON F.id_analisi_p_l=analisi_p_livello.id_valore "
         ." where 1=1 ". $query_dinamica. ")t ORDER BY posizione";
    
                      

    $query2 = $dbh -> prepare($sql2);                                     
    $query2->execute($parametri);
    $results2=$query2->fetchAll(PDO::FETCH_OBJ);

Ma cosi non funziona più nessuna ricerca (ovviamente avrò sbagliato io qualcosa). Quando ho usato in passato Php io ho sempre assegnato i parametri ad una query in questo modo e non ho mai avuto problemi. Ora con questa query ho la necessità di inserire dei parametri e mi è cambiata la vita. Questo è il metodo che ho sempre utilizzato:

PHP:
$query->bindParam(':data_da',$data_da,PDO::PARAM_STR);   
$query->bindParam(':data_a',$data_a,PDO::PARAM_STR);

Cosa ne pensi?
 
Discussioni simili
Autore Titolo Forum Risposte Data
D help, ruotare dati riga a colonna da tabella sql PHP 2
M help query sql Database 3
M Help for Linux Bash Programmazione 1
P Passare i risultati di un foreach in un modal. Help! PHP 2
J help me C/C++ 1
K Help: problema con uno script di booking in php! PHP 0
Q HELP ME PLEASE!‼️‼️ E-Commerce 1
L difficoltà con Xampp. printing php mancante...help Web Server 6
K [PHP] Help me a problem... Pleases PHP 1
S Problemi con modulo upload video php (help!) PHP 0
M HELP FORM CREATO IN PHP PHP 14
M Help - consultare (ed esportare) dati da un DB pubblico mySql PHP 2
S [PHP] help me!! PHP 2
F Cerco contatto tipo help-desk Offerte e Richieste di Lavoro e/o Collaborazione 2
F Help-PDO copiare Database MySQL PHP 3
Andrea1981 [WordPress] [HTML] Help modifica credits nel footer.Tema Customizr. WordPress 5
simgia [Javascript] Google maps help! Javascript 1
S [WordPress] Footer php - il background riempie tutta la pagina - help WordPress 1
A funzioni asincrone e callback...help! Ajax 10
F Help array da javascript a php Javascript 2
M [PHP] Help: controllo valori inseriti in un campo PHP 1
P Help con js/php PHP 6
N Sistema di Help di Delphi 7 non funziona su Win10 Windows e Software 0
silvia88 ***Help*** - Anteprima immagine photoshop diversa da file Photoshop 3
A HELP: vedo il sito posizionato in serp solo con i tool di posizionamento!!! SEO e Posizionamento 3
T [PHP] Calcolo anzianità soggetti [era: Help me :( Esercizio per me impossibile] PHP 9
trattorino Creare codice php help PHP 26
CoyotesSon [PHP] Help! Creazione di una finestra PHP 5
V help java Java 2
L help me Presentati al Forum 0
L N00b need help Webdesign e Grafica 2
I Help - Problema installazione tema di themeforest WordPress 1
claudiav ciao!! help.. Presentati al Forum 0
Z Invio mail da telecamere HIKVision - HELP!!! IP Cam e Videosorveglianza 0
M - WordPress - Sito Annunci HELP ME!!!! :crying: WordPress 2
L Hosting, help HTML e CSS 2
M HoneyPot su macchina virtuale HELP ME PLEASE!!! Reti LAN e Wireless 0
F Help con leaseweb Hosting 2
M DropDownList HELP ASP.NET 8
E [Javascript] help me !!! array da php a java Javascript 9
N Query lenta, help ! MySQL 0
P Help! modifica script Javascript 11
R cookies policy - help Leggi, Normative e Fisco 21
I Piccolo roblema di compatibilità mobile.. help! PHP 1
zorro Help paginazione PHP 10
A Help! Creare un blog/portale con chat in real time WordPress 0
P help variabile js concatenata a echo php Javascript 0
O Help, devo fare un sito web con alcune caratteristiche... HTML e CSS 2
Alessandra Fanelli Menu Collapse- help -nn iserisce azioni a pulsanti Flash 0
M php help ! PHP 3

Discussioni simili