#1 Fri 26 February 2010 19:51
- Eric C.
- Juste Inscrit !
- Lieu: Caen
- Date d'inscription: 3 Feb 2009
- Messages: 2
requête SQL pour linéaire de réseau
Bonjour,
J'utilise actuellement une requête SQL qui me permet d'interroger ma base Oracle et de connaître le linéaire de réseau contenu dans mon SIG par commune et par type de réseau :
select sum(tr_longueur)/1000 || 'm',CCOCOM, re_ident from as_troncon group by re_ident,CCOCOM order by CCOCOM;
Je voudrais utiliser la meme requête mais en ajoutant le paramètre "Diamètre" de manière à connaître le linéaire de réseau par commune, par type de réseau et par diamètre.
Les diametres des tronçons sont contenu dans l'attribut "TR_DIAMETRE".
Je ne parviens pas à construire cette requête SQL.
Est ce que quelqu'un peut me venir en aide ?
Cordialement.
Eric Charles
Chargé d'études et suivi Direction Eau et Assainissement - Communauté d'agglomération Caenlamer
Tél. +332 14 37 28 27 | Fax. +332 31 75 49 95
Hors ligne
#2 Fri 26 February 2010 23:02
Re: requête SQL pour linéaire de réseau
Bonsoir,
Normalement pour faire un GROUP BY sans problème, il est conseillé de faire une requête de la forme
Code:
SELECT colonne1,colonne2,colonne3,operateuraggregat(valeur) FROM votretable GROUP BY colonne1,colonne2,colonne3
où colonne1,colonne2,colonne3 sont les champs qui permettent de faire le tri,
operateuraggregat(valeur) peut être un max,une sum,(...) de la colonne valeur
Cette forme répond en reprenant votre formulation à la question, si on a choisit une somme
"Je veux la somme des valeurs contenues dans mon SIG par colonne1, par colonne2 et par colonne3"
Appliqué à votre cas,
Code:
select CCOCOM, re_ident, TR_DIAMETRE, sum(tr_longueur)/1000 || 'm' from as_troncon group by re_ident,CCOCOM,TR_DIAMETRE order by CCOCOM;
La théorie rejoint la pratique? Merci de votre retour
Une remarque en dehors de la réponse directe à votre question.
Si vous le pouvez, uniformisez la "casse" de vos noms de champs, c'est à dire mettez tous vos champs en majuscules ou minuscules. Utilisant PostgreSQL, je préfère les minuscules. Cette préconisation fait pour moi partie des "bonnes pratiques" (Plus d'infos sur les conventions de nommage http://www.forumsig.org/showthread.php?t=17269 )
Pour Oracle, je ne sais pas quelles sont les règles pour la casse mais vous garderez un code plus lisible en vous fixant ce type de règles.
Cordialement
ThomasG
Hors ligne