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

SQL Oracle Discussion :

Demande : Group by et SDO ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Par défaut Demande : Group by et SDO ?
    Aloha

    Voici la requête qui me permet d'obtenir, par parcelle, son identifiant Oracle, son identifiant, le code rivoli de la voie, le numéro de voirie et l'indice, le libellé de la voie, le propriétaire des lots, et le nombre de lots en copropriété possédés par ce propriétaire.

    [voir ci-dessous]

    Cependant, ma requête utilisant un group by, je dois exclure de mes enregistrement sélectionnés les champs de forme SDO_GEOM. Je ne sais comment faire.

    Dans un deuxième temps, je souhaiterais perfectionner cette requête et ramener le nombre de lots au total de la parcelle possédés par l'ensemble de copropriétaires. Auriez-vous une idée ?

    Codialement,

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 290
    Par défaut
    Citation Envoyé par H.ile Voir le message
    Cependant, ma requête utilisant un group by, je dois exclure de mes enregistrement sélectionnés les champs de forme SDO_GEOM. Je ne sais comment faire.
    Merci de modifier ton message afin de nous présenter un code lisible (et, pendant que tu y es, encadré par les balises [CODE][/CODE]).

    Quel rapport y a-t-il entre l'exclusion que tu veux faire et ton GROUP BY ? Que veut dire "les champs de forme SDO_GEOM" ?

  4. #4
    Membre confirmé Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT PCI_PARC.GID,PCI_PARC.IDENT, MJ2_BATI.CCORIV, MJ2_BATI.DNVOIRI, MJ2_BATI.DVOILIB,MJ2_BATI.DPOR, MJ2_PROPRIO.DDENOM1, count(MJ2_PDL_DESC_LOT.DNULOT) 
    FROM MJ2_BATI, MJ2_HABPRINC , MJ2_LOCAL, MJ2_PROPRIO, MJ2_PDL_DESC_LOT, PCI_PARC 
    WHERE 
    (MJ2_PROPRIO.DDENOM1 like '%COMMUNE DE REIMS%' OR DDENOM1 like '%VILLE DE REIMS%' OR DDENOM1 like'%REIMS METROPOLE%' OR DDENOM1 like '%COMMUNAUTE D AGGLOMERATION DE REIMS%') 
    AND MJ2_PROPRIO.DNUPRO = MJ2_LOCAL.DNUPRO 
    AND MJ2_HABPRINC.INVAR = MJ2_LOCAL.INVAR 
    AND MJ2_HABPRINC.INVAR = MJ2_BATI.INVAR 
    AND ((MJ2_LOCAL.INVAR like '454%') OR (MJ2_LOCAL.INVAR like '055%') OR (MJ2_LOCAL.INVAR like '058%') OR (MJ2_LOCAL.INVAR like '172%') OR (MJ2_LOCAL.INVAR like '474%') OR (MJ2_LOCAL.INVAR like '573%')) 
    AND MJ2_LOCAL.GPDL = 1 
    AND MJ2_PDL_DESC_LOT.KPDL like '%'||MJ2_BATI.CCOCOM||'%'||MJ2_BATI.CCOSEC||MJ2_BATI.DNUPLA||'%' 
    AND MJ2_PDL_DESC_LOT.DNUPROL=MJ2_PROPRIO.DNUPRO 
    AND PCI_PARC.IDENT = MJ2_BATI.CCOCOM||'000'||MJ2_BATI.CCOSEC||MJ2_BATI.DNUPLA GROUP BY PCI_PARC.GID, PCI_PARC.IDENT, MJ2_BATI.CCORIV, MJ2_BATI.DNVOIRI, MJ2_BATI.DVOILIB,MJ2_BATI.DPOR, MJ2_PROPRIO.DDENOM1;
    Citation:
    Quel rapport y a-t-il entre l'exclusion que tu veux faire et ton GROUP BY ? Que veut dire "les champs de forme SDO_GEOM" ?
    A la question sur le sens de SDO_GEOM je vais répondre par, premièrement une définition : SDO comme Spatial Data Object, et deuxièmement par un rappel : la clause groupe by ne peut s'employer avec un champ de type VARRAY.
    Un champ accueillant une définition géométrique est de ce type.

    Donc voilà ce que je veux :

    PCI_PARC.GID ... count(MJ2_PDL_DESC_LOT.DNULOT) GEOMETRIE
    -----------------------------------------------------------------
    1 12 PCI_PARC.GEOMETRY(1)
    2 4 PCI_PARC.GEOMETRY(2)....

    Ce n'est pas pour une édition de rapport, donc pas besoin de m'indiquer les colsep,...
    Le champ GEOMETRY de PCI_PARC est celui qui recueille les informations de géométries au format SDO.

    D'avance merci à tous les spécialistes du cartouche spatial et aux autres aussi.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Sans répondre à votre problématique initiale, je vous propose la réécriture suivante sur cette ligne de condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AND ((MJ2_LOCAL.INVAR LIKE '454%')
      OR (MJ2_LOCAL.INVAR LIKE '055%')
      OR (MJ2_LOCAL.INVAR LIKE '058%')
      OR (MJ2_LOCAL.INVAR LIKE '172%')
      OR (MJ2_LOCAL.INVAR LIKE '474%')
      OR (MJ2_LOCAL.INVAR LIKE '573%'))
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND SUBSTR(MJ2_LOCAL.INVAR, 1, 3) in ('454', '055', '058', '172', '474', '573')
    On respire mieux !

  6. #6
    Scorpi0
    Invité(e)
    Par défaut
    La prochaine fois, essaye d'expliquer ton problème comme si on était des enfants de 5 ans selon l'adage connu.
    Tu es quand même parti en nous lançant une requête ignoble et des mots incompréhensibles du genre SDO, colsep, code rivoli (huhu, ravioli !!! ).

    Cela dit, mes pérégrinations sur les VARRAY me font croire que leur utilisation se limite beaucoup à du PL/SQL, et je ne pense pas que du SQL t'aideras beaucoup à manipuler ces bébêtes là.

    Essaye de coder en PL et de changer de section du forum.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    En supposant que le champ GID est une clef primaire de PCI_PARC, la requête suivante devrait fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    SELECT
        SR1.GID,
        SR1.IDENT,
        SR1.CCORIV,
        SR1.DNVOIRI,
        SR1.DVOILIB,
        SR1.DPOR,
        SR1.DDENOM1,
        SR1.NB_DNULOT,
        PCI.GEOMETRY
    FROM
        PCI_PARC PCI INNER JOIN
        (
        SELECT
            PCI_PARC.GID,
            PCI_PARC.IDENT,
            MJ2_BATI.CCORIV,
            MJ2_BATI.DNVOIRI,
            MJ2_BATI.DVOILIB,
            MJ2_BATI.DPOR,
            MJ2_PROPRIO.DDENOM1,
            count(MJ2_PDL_DESC_LOT.DNULOT) NB_DNULOT
        FROM
            MJ2_BATI,
            MJ2_HABPRINC,
            MJ2_LOCAL,
            MJ2_PROPRIO,
            MJ2_PDL_DESC_LOT,
            PCI_PARC
        WHERE 
            (MJ2_PROPRIO.DDENOM1 LIKE '%COMMUNE DE REIMS%'
          OR MJ2_PROPRIO.DDENOM1 LIKE '%VILLE DE REIMS%'
          OR MJ2_PROPRIO.DDENOM1 LIKE '%REIMS METROPOLE%'
          OR MJ2_PROPRIO.DDENOM1 LIKE '%COMMUNAUTE D AGGLOMERATION DE REIMS%') 
        AND MJ2_PROPRIO.DNUPRO = MJ2_LOCAL.DNUPRO 
        AND MJ2_HABPRINC.INVAR = MJ2_LOCAL.INVAR 
        AND MJ2_HABPRINC.INVAR = MJ2_BATI.INVAR 
        AND SUBSTR(MJ2_LOCAL.INVAR, 1, 3) IN ('454', '055', '058', '172', '474', '573') 
        AND MJ2_LOCAL.GPDL = 1 
        AND MJ2_PDL_DESC_LOT.KPDL LIKE '%' || MJ2_BATI.CCOCOM || '%' || MJ2_BATI.CCOSEC || MJ2_BATI.DNUPLA || '%' 
        AND MJ2_PDL_DESC_LOT.DNUPROL=MJ2_PROPRIO.DNUPRO 
        AND PCI_PARC.IDENT = MJ2_BATI.CCOCOM || '000' || J2_BATI.CCOSEC || MJ2_BATI.DNUPLA
        GROUP BY
            PCI_PARC.GID,
            PCI_PARC.IDENT,
            MJ2_BATI.CCORIV,
            MJ2_BATI.DNVOIRI,
            MJ2_BATI.DVOILIB,
            MJ2_BATI.DPOR,
            MJ2_PROPRIO.DDENOM1
        ) SR1
          ON PCI.GID = SR1.GID;

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/06/2014, 17h11
  2. Demande de précision sur "GROUP"
    Par rouletabille63 dans le forum BIRT
    Réponses: 4
    Dernier message: 16/05/2012, 08h24
  3. [AC-2010] Calcul de RANG par groupe - Demande d'aide
    Par Dimide dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2011, 00h30
  4. Réponses: 8
    Dernier message: 05/04/2011, 13h36

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