1 seule requete preparee pour un select et deux count
Posté : 19 avr. 2019, 13:38
Bonjour à tous,
Depuis quelques mois, je suis entrain de développer un petite interface web pour le boulot. Jusqu'à maintenant j'ai toujours trouvé les solutions à mon ou mes problèmes mais en ce moment je bute sur une requête multiple.
le but: Après avoir rempli un formulaire, en choisissant Deux Services (Achat, Comm), une DATE de début et une DATE de fin concernant la table demande_interplay l'utilisateur pourra voir le compte par mois et par service sous la forme dans un graphique grâce à chartjs.
La table 'Demande_interplay' à plusieurs champs :
- Services (varchar)
- Date_time (datetime)
J'ai réussi à créer ma requête lorsque je sélectionne 1 service, le graphique s'affiche correctement.
voici mon code pour 1 service :
J'espere que j'ai été assez claire et pas trop long....
Cordialitude,
Codecodecodec
Depuis quelques mois, je suis entrain de développer un petite interface web pour le boulot. Jusqu'à maintenant j'ai toujours trouvé les solutions à mon ou mes problèmes mais en ce moment je bute sur une requête multiple.
le but: Après avoir rempli un formulaire, en choisissant Deux Services (Achat, Comm), une DATE de début et une DATE de fin concernant la table demande_interplay l'utilisateur pourra voir le compte par mois et par service sous la forme dans un graphique grâce à chartjs.
La table 'Demande_interplay' à plusieurs champs :
- Services (varchar)
- Date_time (datetime)
J'ai réussi à créer ma requête lorsque je sélectionne 1 service, le graphique s'affiche correctement.
voici mon code pour 1 service :
$chart_x ="";
$chart_y ="";
$req_chart = $bdd->prepare("SELECT COUNT(*) AS nb_demande, DATE_FORMAT(date_time,'%m-%y') AS mois_annee from demande_interplay WHERE services= :services_chart AND date_time BETWEEN :date_in_chart AND :date_out_chart GROUP BY mois_annee");
$req_chart->bindValue(':services_chart', $services_chart, PDO::PARAM_STR);
$req_chart->bindValue(':date_in_chart', $date_in_chart, PDO::PARAM_STR);
$req_chart->bindValue(':date_out_chart', $date_out_chart, PDO::PARAM_STR);
$req_chart->execute();<br> $result_chart = $req_chart->fetchall(PDO::FETCH_ASSOC);
foreach($result_chart as $string_chart => $string_chart_seg)
{
/**Je recupere deux strings un pour l'ordonnée avec le count par mois et un pour l'abscisse avec mes dates de début et de fin en mode 'mois_annee' **/
$chart_x .= $string_chart_seg['mois_annee']."', '";
$chart_y .= $string_chart_seg['nb_demande'].", ";
}
$req_chart->closeCursor();
Par contre quand je sélectionne 2 services, ma requête me renvoie un count total par service sur tous les mois. Mes deux GROUP BY sur les requetes 'count' ne fonctionnent pas. $chart_x_1 ="";
$chart_y_1 ="";
$chart_y_2 ="";
$req_chart_1 = $bdd->prepare("SELECT DATE_FORMAT(date_time,'%m-%y') AS mois_annee,
(SELECT COUNT(services) from demande_interplay WHERE services= :services_chart_1 AND date_time BETWEEN :date_in_chart AND :date_out_chart GROUP BY mois_annee) AS nb_demande_1,
(SELECT COUNT(services) from demande_interplay WHERE services= :services_chart_2 AND date_time BETWEEN :date_in_chart AND :date_out_chart GROUP BY mois_annee) AS nb_demande_2
from demande_interplay WHERE date_time BETWEEN :date_in_chart AND :date_out_chart GROUP BY mois_annee ");
$req_chart_1->bindValue(':services_chart_1', $services_chart_1, PDO::PARAM_STR);
$req_chart_1->bindValue(':services_chart_2', $services_chart_2, PDO::PARAM_STR);
$req_chart_1->bindValue(':date_in_chart', $date_in_chart, PDO::PARAM_STR);
$req_chart_1->bindValue(':date_out_chart', $date_out_chart, PDO::PARAM_STR);
//$req_chart_1->bindValue(':workflow_chart', $workflow_chart, PDO::PARAM_STR);
//
$req_chart_1->execute();
$result_chart_1 = $req_chart_1->fetchall(PDO::FETCH_ASSOC);
foreach($result_chart_1 as $string_chart_1 => $string_chart_seg_1)
{
/**Je recupere 3 strings, deux pour l'ordonnée avec le count par mois et par service et un pour l'abscisse avec mes dates de début et de fin en mode 'mois_annee' **/
$chart_x_1 .= $string_chart_seg_1['mois_annee']."', '";
$chart_y_1 .= $string_chart_seg_1['nb_demande_1'].", ";
$chart_y_2 .= $string_chart_seg_1['nb_demande_2'].", ";
}<br> $req_chart_1->closeCursor();
Est ce possible de faire ça une seule requête?J'espere que j'ai été assez claire et pas trop long....
Cordialitude,
Codecodecodec