requete SQL [RESOLU] - SQL/NoSQL - Programmation
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>
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
Marsh Posté le 18-04-2017 à 19:03:21
intersec est pas forcément dispo sur tous les sgbd il me semble.
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.
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