[RESOLU]requete SQL

requete SQL [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 17-04-2017 à 14:44:52    

Bonjour,
 
Je suis sur phpmyadmin et je tente de réaliser une requête sql me permettant de répondre à la question suivante:  
 
Je veux avoir  la liste des maladies dans ma table "event_gd" qui reviennent sur au moins une période (deux années) qui sont au format YYYY-MM-DD.
 
Par exemple je veux avoir la liste de toute les maladies qui apparaissent au minimum une fois dans deux années au minimum différente.  
 
 
 
En espérant avoir été assez claire !  
 
Bonne journée  :)


Message édité par yann7622 le 24-04-2017 à 18:54:27
Reply

Marsh Posté le 17-04-2017 à 14:44:52   

Reply

Marsh Posté le 18-04-2017 à 11:10:30    

Quelle est la structure de "event_gd" ?

Reply

Marsh Posté le 18-04-2017 à 11:56:33    

Sans la structure, le plus simple est de trouver deux fois le résultat, et de croiser. Cad tu fais deux select (chaque select vérifie que pour l'année X tu as au moins 1x la maladie qui apparait), et ensuite tu croise les résultats avec INTERSECT: http://sql.sh/cours/intersect
 
Pour que intersect marche, il faut que les résultats soit comparable, donc il te faut par exemple SELECT maladie_name <blablabla> INTERSECT SELECT maladie_name <blablabla>

Reply

Marsh Posté le 18-04-2017 à 13:57:51    

Tu calcules le nb d'occurrences de chaque maladie par année (sous-requête) et tu gardes celles dont la somme du nb d'occurrences par année est >= 2.
Ex :  
SELECT t1.idmaladie, COUNT(Tmp.NBOCC) AS NB FROM OccurrencesMaladies t1 INNER JOIN
(SELECT st.idmaladie, FORMATAGE_DATE(st.datemaladie, "Y" ) AS Annee, COUNT(st.idoccurrence) AS NBOCC FROM OccurrencesMaladies st WHERE st.datemaladie BETWEEN date1 AND date2 GROUP BY st.idmaladie, Annee) AS Tmp ON (t1.idmaladie = Tmp.idmaladie)
GROUP BY t1.idmaladie HAVING NB >=  2


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-04-2017 à 16:55:01    

La solution de Devil's me parait plus jolie

Reply

Marsh Posté le 18-04-2017 à 19:03:21    

intersec est pas forcément dispo sur tous les sgbd il me semble.


Message édité par rufo le 18-04-2017 à 19:03:32

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-04-2017 à 08:14:37    

Effectivement, a priori INTERSECT n'est pas disponible sous mySQL. Mais dans le lien de Devil il y a une proposition d'équivalent.


Message édité par h3bus le 24-04-2017 à 19:07:05

---------------
sheep++
Reply

Marsh Posté le 24-04-2017 à 18:53:00    

Merci pour vos réponses ! Tout fonctionne  :)  :)  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed