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 :

Connect by et branche complète


Sujet :

SQL Oracle

  1. #21
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Il y a beaucoup d'exemple de over() sans window.

    ex:
    les employés de emp avec leur salaire par rapport au salaire du département et par rapport au salaire de tous les employés

    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
     
    select deptno,ename, sal, 
      to_char(
        ratio_to_report(sal) over (partition by deptno)
    	*100,'990')||'%' pct_dept, 
      to_char(
    	ratio_to_report(sal) over ()
    	*100,'990')||'%' pct
    from emp; 
     
        DEPTNO ENAME             SAL PCT_D PCT
    ---------- ---------- ---------- ----- -----
            10 CLARK            2450   28%    8%
            10 KING             5000   57%   17%
            10 MILLER           1300   15%    4%
            20 JONES            2975   27%   10%
            20 FORD             3000   28%   10%
            20 ADAMS            1100   10%    4%
            20 SMITH             800    7%    3%
            20 SCOTT            3000   28%   10%
            30 WARD             1250   13%    4%
            30 TURNER           1500   16%    5%
            30 ALLEN            1600   17%    6%
            30 JAMES             950   10%    3%
            30 BLAKE            2850   30%   10%
            30 MARTIN           1250   13%    4%

  2. #22
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut
    Bon, et bien cela à l'air de fonctionner.

    Cela démontre une belle maitrise de ta part et cela m'a permis d'affiner mes connaissances.

    Tu l'avais déjà construite cette requête ou tu l'as faite sur le tas ? (je suis bien curieux )

  3. #23
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    sur le tas bien sûr

  4. #24
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut
    Allez une petite dernière, si je puis me permettre :

    Il ne faut pas récupérer les etatobjet à 1 et il ne faut pas non plus qu'ils empêchent que la branche soit récupérée !!

    Je fais un replace(p_etatobjet, '/1') ?

    J'essaie de travailler à la suite du connect by ou dans le where (qui supprime les lignes ne répondant pas aux critères à la fin)

    ---------
    Solution :
    ---------

    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
    select nom from (
      select
        nom,
    	max(replace(p_etatobjet,'/2')) over (partition by substr(p_nom,2,instr(p_nom||'/','/',2)-2)) x
      from (
        select
            nom, 
    		sys_connect_by_path(NOM, '/') p_nom,
            sys_connect_by_path(etatobjet, '/') p_etatobjet
        from test
        start with parent is null and etatobjet=2
        connect by prior id = parent
    	and mod(etatobjet, 2)=0
        )
    ) where x is null;

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Connection à un disque dur branché sur une box
    Par ledisciple dans le forum Windows
    Réponses: 5
    Dernier message: 05/07/2014, 17h36
  2. [SQL] 1 Branche avec CONNECT BY
    Par alx13 dans le forum SQL
    Réponses: 8
    Dernier message: 21/04/2011, 11h47
  3. exporter une branche complète
    Par kakashi99 dans le forum CVS
    Réponses: 1
    Dernier message: 18/10/2010, 17h18
  4. connection wifi impossible car ethernet branché
    Par enrico83600 dans le forum Windows 2000/Me/98/95
    Réponses: 6
    Dernier message: 20/06/2010, 05h57
  5. Connect by et Branche de taille minimum
    Par boutss dans le forum Oracle
    Réponses: 7
    Dernier message: 07/12/2006, 12h05

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