IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Soucis de requête postgresl 9.4 sous Mac OS X (données majic)


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Soucis de requête postgresl 9.4 sous Mac OS X (données majic)
    Bonjour à tous,

    Dans le cadre de mon stage, je travail avec les données Majic d'une commune.
    Ma base de données est sous Postgresql, et j'ai un soucis lors de la création d'un nouveau champ.

    Exemple:

    Je dois effectuer une sélection de la surface maximale de mes subdivisions fiscales (dcntsfd) par parcelle(id_par) avec le type d'occupation du sol(cgrnumd) dominant correspondant. Je cherche a crée ce champ .(cgrnumd)

    Pour cela je dispose :

    La table des subdivisions fiscales (suf)

    Plusieurs variables:
    Dcntsf, surface des subdivisions fiscales
    Dcntsfd, surface dominante des subdivisions fiscales
    Id_par, identifiant de parcelle
    Id_suf, identifiant de la subdivision fiscale
    Cgrnum, type d'occupation du sol sur la subdivision fiscale
    Cgrnumd, a créer type d'occupation dominant ( sol, agriculture, terrains à bâtir...)

    Important : Une parcelle peux avoir plusieurs subdivisions fiscales.


    Requête testée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT distinct (id_par) id_par,MAX(dcntsf) AS dcntsfd
    from suf
    GROUP BY id_par
    ORDER BY id_par;
    Avec cette requête, j'arrive à avoir la surface de la suf la plus grande présent sur la parcelle.
    Maintenant je bloque sur comment obtenir Cgrnumd, c'est à dire Cgrnum associé à la subdivision la plus grande.

    Ma tentavive :

    Je cherche à avoir Cgrnumd, en incluant Cgrnum dans le group by, j’obtiens toutes les subdivisions par parcelle et non pas seulement la subdivision la plus grande avec son type d’occupation correspondant.

    Je ne sais pas comment faire, merci d'avance si vous pouvez m'aiguiller.

    Bonne journée à tous.

    Julien

    Cordialement

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Vous voulez ajouter une colonne (et non pas une variable ni champ) dans votre table, pour stocker le résultat d'un calcul, en l'occurrence le type d'occupation dominant.
    Or les valeurs calculées ne doivent pas être stockées, en effet, si le type d'occupation ou la surface change, le contenu de cette colonne deviendra erroné.
    De plus, ajouter cette colonne serait une entorse aux règles de modélisation (formes normales) car cette valeur ne serait pas dépendante fonctionnellement de l'identifiant.

    Il faut donc calculer cette colonne à chaque fois que c'est nécessaire, vous pouvez faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT T1.Id_par   as Id_parcelle
         , T1.Cgrnumd  as Type_Dominant
         , T1.Dcntsf   as Surface_Maxi          
    FROM Suf as T1                              
    WHERE NOT EXISTS                               
         (SELECT 1                                 
          FROM Suf as  T2                        
          WHERE T2.Id_Par=T1.Id_Par
            AND T2.Dcntsf>T1.Dcntsf)                 
    Order by T1.Id_par

Discussions similaires

  1. [Lazarus] Faire une requête HTTP sous Mac OS X sans indy
    Par sinfoni dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/05/2010, 13h16
  2. Soucis avec Java sous Mac OS X
    Par moila dans le forum Langage
    Réponses: 1
    Dernier message: 16/10/2009, 13h33
  3. Souci menu deroulant sous safari 1.3.2 (sous mac) Important
    Par silverfab34 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 20/06/2008, 10h49
  4. Souci de connexion internet via PPPoE sous Knoppix
    Par Anomaly dans le forum Réseau
    Réponses: 11
    Dernier message: 23/09/2004, 20h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo