le clausole where devono essere uguali nelle due query, altrimenti il rischio é quello di ottenere totali differenti dalla lista degli elementi, quindi meglio definire 1 sola variabile e 1 sola array
questo x verifica
questo x verifica
PHP:
<?php
error_reporting(-1);
require_once 'myUtils/show_vars.php';
$data_da = "2023-01-02";
$data_a = "2023-01-22";
$componente = 123456789;
$stampo = "stampo1";
$analisi = "analisi1";
$tipo_manutenzione = "tipo_manutenzione1";
$query_dinamica = "";
$parametri = array();
if (($data_da != "" ) && ($data_a != "" )) {
$query_dinamica .= " and (data_intervento BETWEEN ? and ?)";
$parametri[] = $data_da;
$parametri[] = $data_a;
}
if ($componente != "" ) {
$query_dinamica .= " and id_parte_intervento = ?";
$parametri[] = $componente;
}
if ($stampo != "" ) {
$query_dinamica .= " and id_stampo_intervento = ?";
$parametri[] = $stampo;
}
if ($analisi != "" ) {
$query_dinamica .= " and id_analisi_p_l = ?";
$parametri[] = $analisi;
}
if ($tipo_manutenzione != "" ) {
$query_dinamica .= " and id_tipo_intervento = ?";
$parametri[] = $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,"
. "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_dinamica
. " 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";
echo "<h3>parametri</h3>".show_var( $parametri )."<br />";
echo $query_dinamica;
//echo $sql2;
// $query2 = $dbh -> prepare($sql2);
// $query2->execute($parametri);
// $results2=$query2->fetchAll(PDO::FETCH_OBJ);
die;
Ultima modifica: