Requetes tri par tranche horaire
Posté : 08 août 2013, 11:17
Bonjour tous le monde,
Voila dans la cadre de mon stage de fin d'année pour la validation de mon diplôme. Je travail sur un projet d'automatisation de l'information dans une base de donnée via l'outil de reporting "BIRT REPORT". Je travail sur une base de donnée "MYSQL" (5.2) et j'utilise "NAVICAT" pour tester mes requêtes au préalable.
Alors je suis actuellement en train de travailler sur une requête de tri pour afficher les résultats de deux villes par tranches horaires. Je rencontre pas mal de difficulté sur cette requête.
Voila à quoi devrais ressembler le résultat:
Le premier soucis: Je n'arrive pas à effectuer mon tri par tranche horaire de 30 minute ( j'ai utilisé un group by mais cela ne fonctionne pas) comme au dessus.
La deuxième soucis: Je suis obligé d'utiliser des unions pour répéter ma requete afin d'avoir tous les résultats comme ceci:
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '00:00' AND '07:30'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '07:30' AND '08:00'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '08:00' AND '08:30'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '08:30' AND '09:00'
J'obtiens ce résultat la:
Et ainsi de suite jusque 19H. Je voulais savoir si il n'y avait pas une autre solution que de répéter la requête mainte et mainte fois.
Enfin troisième problème: Je travail sur les villes de Lannion et de St Brieuc. Cependant ces deux villes sont dans la même table. Je n'arrive pas à afficher simultanément les deux villes comme sur le premier screen. j'ai déjà réussi sur d'autres requêtes à afficher les villes de Saint Brieuc et de Lannion avec une jointure. Mais Là, à cause des Unions. Je n'ai pas non plus de solution pour afficher les deux villes en même temps la requête deviens vraiment très très longue et très lourde. ( et en plus ça, cela ne fonctionne pas)
Voila, j'ai essayer d'être le plus clair pour vous exposer les différents soucis que j'ai rencontré. Je vous remercie encore une fois d'avance pour votre aide.
Voila dans la cadre de mon stage de fin d'année pour la validation de mon diplôme. Je travail sur un projet d'automatisation de l'information dans une base de donnée via l'outil de reporting "BIRT REPORT". Je travail sur une base de donnée "MYSQL" (5.2) et j'utilise "NAVICAT" pour tester mes requêtes au préalable.
Alors je suis actuellement en train de travailler sur une requête de tri pour afficher les résultats de deux villes par tranches horaires. Je rencontre pas mal de difficulté sur cette requête.
Voila à quoi devrais ressembler le résultat:
Le premier soucis: Je n'arrive pas à effectuer mon tri par tranche horaire de 30 minute ( j'ai utilisé un group by mais cela ne fonctionne pas) comme au dessus.
La deuxième soucis: Je suis obligé d'utiliser des unions pour répéter ma requete afin d'avoir tous les résultats comme ceci:
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '00:00' AND '07:30'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '07:30' AND '08:00'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '08:00' AND '08:30'
UNION
SELECT COUNT(NUMDEMANDE) AS SAINT_BRIEUC
FROM `info15`.DEMANDE
WHERE (YEAR(DATEDEM) = '2013' AND MONTH(DATEDEM) = '03') AND NUMUTI <> 778
AND ENTSER = '1' AND TIME(DATEDEM) BETWEEN '08:30' AND '09:00'
J'obtiens ce résultat la:
Et ainsi de suite jusque 19H. Je voulais savoir si il n'y avait pas une autre solution que de répéter la requête mainte et mainte fois.
Enfin troisième problème: Je travail sur les villes de Lannion et de St Brieuc. Cependant ces deux villes sont dans la même table. Je n'arrive pas à afficher simultanément les deux villes comme sur le premier screen. j'ai déjà réussi sur d'autres requêtes à afficher les villes de Saint Brieuc et de Lannion avec une jointure. Mais Là, à cause des Unions. Je n'ai pas non plus de solution pour afficher les deux villes en même temps la requête deviens vraiment très très longue et très lourde. ( et en plus ça, cela ne fonctionne pas)
Voila, j'ai essayer d'être le plus clair pour vous exposer les différents soucis que j'ai rencontré. Je vous remercie encore une fois d'avance pour votre aide.