Lier plusieurs requêtes SQL - SQL/NoSQL - Programmation
Marsh Posté le 04-09-2013 à 11:49:25
Je dirais comme ça de faire un UNION entre les 3 requêtes.
Marsh Posté le 04-09-2013 à 11:52:42
c'est a quoi j'ai pensé aussi mais l'UNION ne veut pas s’exécuter avec ma fonction d’agrégation..
Marsh Posté le 04-09-2013 à 12:07:29
Fait ton GROUP BY et ton ORDER BY sur "Année". Pour le COUNT(), fait le sur un ID et non sur "*" (c'est très crade ) et met un AS après avec le même nom dans chacune des 3 requêtes... Ca devrait passer.
Il faut que le contenu des 3 select soit identique en terme de champs et types de données.
Par contre, t'auras qu'un seul ORDER BY pour les 3 requêtes (à mettre sur la dernière).
Marsh Posté le 04-09-2013 à 12:25:36
J'ai une erreur qui me dis que la clause SELECT ne doit pas être suivie de 'interv_cur'
Marsh Posté le 04-09-2013 à 13:21:35
Normalement, tu dois avoir un truc du genre
SELECT ... FROM .... WHERE ... GROUP BY ... UNION SELECT ... FROM .... WHERE ... GROUP BY ... UNION SELECT ... FROM .... WHERE ... GROUP BY ... ORDER BY ...
Marsh Posté le 04-09-2013 à 13:40:29
Exactement mais ça ne marche pas...Il n'aime définitivement pas le substring
*EDIT: j'ai fermé et relancé le programme et l'erreur a disparu...je regarde si j'arrive à obtenir ce que je veux
Marsh Posté le 04-09-2013 à 13:54:17
Parfait ça marche, merci beaucoup pour ton aide rapide et concise rufo
Marsh Posté le 05-09-2013 à 08:50:44
Ya moyen aussi de tout faire en une seule query (sans les union je veux dire):
Code :
|
Marsh Posté le 04-09-2013 à 11:08:15
Bonjour à tous,
Je viens juste de commencer le SQL et j'ai un peu de mal. Mon problème est le suivant:
Je souhaite afficher mes résultat de la manière suivante:
Année Interventions curatives Interventions préventives Interventions totales
2013 100 135 235
Mais je n'arrive pas à tout regrouper dans une seule requête, donc j'obtient ceci:
Requete1: Requête 2: Requête 3:
Année Interventions curatives Année Interventions préventives Année Interventions totales
2013 100 2013 135 2013 235
Pour faire cela, j'utilise donc 3 requêtes:
SELECT substring(B_FT1996.date,1,4) AS 'Année', Count(*)
FROM AssetPlus.dbo.B_FT1996 B_FT1996
WHERE (B_FT1996.CADRE='interv_cur')
GROUP BY substring(B_FT1996.date,1,4)
ORDER BY substring(B_FT1996.date,1,4)
SELECT substring(B_FT1996.date,1,4) AS 'Année', Count(*)
FROM AssetPlus.dbo.B_FT1996 B_FT1996
WHERE (B_FT1996.CADRE='interv_prev')
GROUP BY substring(B_FT1996.date,1,4)
ORDER BY substring(B_FT1996.date,1,4)
SELECT substring(B_FT1996.date,1,4) AS 'Année', Count(*)
FROM AssetPlus.dbo.B_FT1996 B_FT1996
WHERE (B_FT1996.CADRE='interv_tot')
GROUP BY substring(B_FT1996.date,1,4)
ORDER BY substring(B_FT1996.date,1,4)
Je précise que B_FT1996.date est de la forme 2013-04-02
Je pense que mon problème est enfantin, mais j'ai vraiment besoin d'aide
Merci d'avance