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

Oracle Discussion :

écriture de requête [Débutant(e)]


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut écriture de requête
    Bonjour,

    Je susi pas super bon en SQL et la je séche, pouvez vous m'aider svp? :

    Soit trois tables A, B et C

    A joint B (1 -> N) avec A1 = B1
    B joint C (1 -> 0) avec B1 = C1
    A joint C (1 -> 0) avec A2 = C2

    Le but est de ramener l'ensemble des donées sur A, B et C

    une ligne de A ->potentiellement plusieurs B ->potentiellement plusieurs C
    une ligne de A ->potentiellement plusieurs C sans B

    Oracle Version XE

    Merci par avance.

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Regarde ce post, je pense qu'il devrait te permettre de répondre à ton problème :
    http://www.developpez.net/forums/sho...light=jointure

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut
    Merci de ta réponse ,

    je regarde ca attentivement et te tiens au courant.

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut caramba encore raté
    Sur tes conseils, j'ai tenter ceci mais cela ne fonctionne pas, une idée?

    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
    	*
    FROM
    	ORD_ART d,
    	ORD_PIE a,
    	ORD_PIELIG b
    		LEFT JOIN ORD_PIEPMO opmo ON (opmo.PIE_COD=b.PIE_COD AND opmo.PIELIG_NUM_LIG=b.PIELIG_NUM_LIG)
    		LEFT JOIN ORD_PMO pmot ON (pmot.PMO_COD=opmo.PMO_COD)
    		LEFT JOIN ORD_MDL_VALCHP vc ON vc.PIELIG_NUM_LIG=b.PIELIG_NUM_LIG_WEB,
    	(
    		SELECT
    			opl.PIE_COD,
    			opl.PIELIG_NUM_LIG
          	FROM ORD_PIE op,ORD_PIELIG opl
          	WHERE op.PIE_COD = opl.PIE_COD
       ) KENG
    WHERE
    	a.PIE_COD='XXXXXXX'
    	AND a.PIE_COD=b.PIE_COD
    	AND b.ART_COD=d.ART_COD
    	AND d.ART_WEB='XXXXXXX'
    	AND d.ART_ACF='XXXXXXX'
    	AND vc.PIE_COD=a.PIE_COD_WEB
    	AND (vc.PIE_COD=KENG.PIE_COD(+)) 
    	AND (vc.PIELIG_NUM_LIG=KENG.PIELIG_NUM_LIG(+))
    et sa réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-25156: une ancienne jointure externe (+) ne peut pas être utilisée avec des jointures ANSI
    d'aprés ce que je comprend, il faut ecrire la jointure autrement, mais je vois pas comment...

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Oui tu as mélangé l'écriture oracle des jointures(+) et l'écriture normalisé JOIN. Il faut que tu remplaces soit l'une soit l'autre.

  6. #6
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut
    A OK !
    J'y retourne !
    A+

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut
    J'ai tenté ceci mais cela ne fonctionne pas, car par exemple s'il n'y as pas de données sur la table vcje récupère rien (alors que je souhaite quand meme recupérer le reste des datas) tu vois une 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    SELECT
    	*
    FROM
    	ORD_ART d,
    	ORD_PIE a,
    	ORD_PIELIG b,
    	ORD_PIEPMO opmo,
    	ORD_PMO pmot,
    	ORD_MDL_VALCHP vc,
    	(	SELECT
    			op.PIE_COD_WEB,
    			opl.PIELIG_NUM_LIG_WEB
          	FROM
          		ORD_PIE op,
          		ORD_PIELIG opl
          	WHERE
          		op.PIE_COD = opl.PIE_COD
          		AND PIE_COD_WEB is not null
          		AND PIELIG_NUM_LIG_WEB is not null
       ) KENG
    WHERE
    	a.PIE_COD='XXXX'
    	AND a.PIE_COD=b.PIE_COD
    	AND b.ART_COD=d.ART_COD
    	AND d.ART_WEB='XXXX'
    	AND d.ART_ACF='XXXX'
    	AND (vc.PIE_COD=KENG.PIE_COD_WEB(+))
    	AND (vc.PIELIG_NUM_LIG=KENG.PIELIG_NUM_LIG_WEB(+))
    	AND (opmo.PIE_COD=b.PIE_COD(+))
    	AND (opmo.PIELIG_NUM_LIG=b.PIELIG_NUM_LIG(+))
    	AND (pmot.PMO_COD=opmo.PMO_COD)

  8. #8
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Par rapport à l'exemple que tu as donné dans ton premier post, voici ce que cela devrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select *
    from A, (select B.*, C.*
               from B, C
               where B1 = C1 (+)) D
    where A1 = B1
      and A2 = C2 (+);

  9. #9
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut ayé !
    Je vien de lire ton dernir post mais j'avais déjà la bonne piste !

    voici :
    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
     
    SELECT
    	d.*,
    	vc.CHP_COD,
    	vc.VALCHP,
    	KENG.ze_PIE_COD_WEB,
    	KENG.ze_PIE_COD_REF,
    	KENG.ze_PIELIG_NUM_LIG_WEB,
    	KENG.ze_ART_COD,
    	KENG.ze_PIELIG_QTE as PIELIG_QTE,
    	KENG.ze_PIELIG_CMT_CLI as PIELIG_CMT_CLI
     
    FROM
    	ORD_ART d,
    	ORD_MDL_VALCHP vc,
    	(	SELECT
    			op.PIE_COD_WEB as ze_PIE_COD_WEB,
    			op.PIE_COD as ze_PIE_COD_REF,
    			opl.PIELIG_NUM_LIG_WEB AS ze_PIELIG_NUM_LIG_WEB,
    			opl.ART_COD as ze_ART_COD,
    			PIELIG_QTE as ze_PIELIG_QTE,
    			PIELIG_CMT_CLI as ze_PIELIG_CMT_CLI
          	FROM
          		ORD_PIE op,
          		ORD_PIELIG opl
          	WHERE
          		op.PIE_COD=opl.PIE_COD
          		AND op.PIE_COD='XXXX'
       ) KENG
    WHERE
        KENG.ze_ART_COD=d.ART_COD
    	AND d.ART_WEB='XXXX'
    	AND d.ART_ACF='XXXX'
    	AND (vc.PIE_COD(+)=KENG.ze_PIE_COD_WEB)
    	AND (vc.PIELIG_NUM_LIG(+)=KENG.ze_PIELIG_NUM_LIG_WEB)
    Un grand merci et a bientot sur les ondes !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 11/02/2010, 19h55
  2. Résultats du concours : écriture de requêtes ?
    Par Eban dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/10/2008, 15h17
  3. pb d'écriture de requête
    Par lesultan2007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/06/2008, 16h59
  4. [CONCOURS] - SQL : écriture de requêtes
    Par orafrance dans le forum Langage SQL
    Réponses: 0
    Dernier message: 14/01/2008, 10h34
  5. [SYBASE] Aide pour l'écriture d'une requête
    Par karine77 dans le forum Sybase
    Réponses: 2
    Dernier message: 26/04/2005, 11h57

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