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

Langage SQL Discussion :

[SQL - ORACLE] Requete un peu compliquée (pour moi)


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Points : 75
    Points
    75
    Par défaut [SQL - ORACLE] Requete un peu compliquée (pour moi)
    Bonjour,

    Je dois écrire une requete qui relie 4 tables et j'ai un petit soucis.
    Pour vous expliquer, je ne vais prendre que 2 tables en espérant pouvoir l'adapter plus tard à mon système des 4 tables.

    Les 2 tables sont donc :
    CARACT_TITRE et CARACT_VALEUR

    La clé primaire de ces deux tables est composée de : ID_equipement et Ordre_affichage.
    Je dois pouvoir récupérer, dans une meme ligne, le titre et la valeur.
    Jusque là, pas de problèmes.

    Il n'y a pas d'enregistrement pour la valeur si elle est nulle mais je dois quand meme pouvoir récupérer la valeur. J'ai pu obtenir le bon résultat en utilisant une jointure externe.
    Mon problème est que ce fonctionnement est également vrai dans l'autre sens. C'est à dire qu'il peut y avoir une valeur sans titre associé s'il n'est pas défini.

    Et là, je ne sais plus faire.
    Je ne sais pas comment faire pour afficher, dans l'ordre Ordre_affichage, tous les titres qu'ils aient une valeur ou non et toutes les valeurs qu'ils aient un titre ou non.

    J'ai pas mal cherché de mon coté mais pas pu utilisé google car je ne vois meme pas quels mots clé je pourrais donner.

    Quelqu'un a t'il déjà été confronté a ce problème et / ou quelqu'un a t'il une piste pour m'aider un petit peu ?

    Merci beaucoup
    Worldofdada

  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
    Bonjour

    En quelle version d'oracle es-tu ?

    NB : il existe un forum oracle où tu aurais plus de chance de trouver une réponse.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Points : 75
    Points
    75
    Par défaut
    Version 9i

    Je ne savais pas pour le forum Oracle ... Je posterais là bas si je reste bloqué ...

    merci

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par plaineR
    Bonjour

    En quelle version d'oracle es-tu ?

    NB : il existe un forum oracle où tu aurais plus de chance de trouver une réponse.
    + 2

    Sinon le mot clé que tu cherches est FULL OUTER JOIN, mais comme on ne connait pas ta version, impossible de te dire si tu peux l'utiliser ou non (si non, il te faudra faire une UNION de 2 requêtes)

  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
    En 9i tu as les full outer join
    exemple :
    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
    SQL> create table test1 (n number, titre varchar2(30));
    Table created.
     
    SQL> create table test2 (n number, valeur varchar2(30));
    Table created.
     
    SQL> insert into test1 values (1, 'titre1');
    1 row created.
     
    SQL> insert into test1 values (2, 'titre2');
    1 row created.
     
    SQL> insert into test2 values (2, 'valeur2');
    1 row created.
     
    SQL> insert into test2 values (3, 'valeur3');
    1 row created.
     
    SQL> select test1.*, test2.*
      2  from test1 full outer join test2
      3  on test1.n = test2.n
      4  order by test1.n;
     
            N TITRE                                  N VALEUR
    --------- ------------------------------ --------- ------------------------------
            1 titre1
            2 titre2                                 2 valeur2
                                                     3 valeur3
     
    3 rows selected.

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pas de scripte de creation des objects de votre base,
    Pas de jeu d'essai,
    Comment veux-tu trouver rapidement une reponse satisfaisante ?

  7. #7
    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
    Citation Envoyé par WOLO Laurent
    Comment veux-tu trouver rapidement une reponse satisfaisante ?
    Ma réponse n'est pas satisfaisante ?

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par plaineR
    Ma réponse n'est pas satisfaisante ?
    Comme le dit Laurent, si sa version est la 7.1.4 le FULL OUTER JOIN ne va pas bien marcher...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Points : 75
    Points
    75
    Par défaut
    Re Bonjour, excusez moi pour le temps de réponse un peu long.

    Je suis sur une 9i.

    Je vous ai mis online le schéma de la base concerné :
    http://img462.imageshack.us/my.php?image=tmp28kk.jpg

    Le lien qui pose problème est celui de l'ordre d'affichage rajouté sur cette image :
    http://img369.imageshack.us/my.php?image=tmp6gn.jpg

    Mon soucis est que si je met =, ca ne me renvoi pas les enregistrements qui n'existent pas dans les 2 tables.
    Je n'arrive pas a faire fonctionner correctement le full outer join.

    Et surtout, c'est pour, au final, intégrer dans Crystal Report et je n'ai pas le droit a cette liaison (car ca fait une boucle et Crystal me jette)

    Je commence a me demander si c'est possible de faire ca ...

    Merci pour vos aides

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    9I : le FULL OUTER JOIN fonctionne, mais si tu ne postes pas ta requête, je vais avoir du mal à interpréter :
    Mon soucis est que si je met =, ca ne me renvoi pas les enregistrements qui n'existent pas dans les 2 tables

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Points : 75
    Points
    75
    Par défaut
    Voilà la requete ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SPECIFICATION.CWSP_CODE, ATTRIBUTE.INDX, SPECIFICATION.CWSP_DESCRIPTION, ATTRIBUTE.CWAT_NAME, EQUIPMENT_ATTRIBUTE.ETAT_VALUE, EQUIPMENT_SPECS.ETES_EQUIPMENT, EQUIPMENT_ATTRIBUTE.INDX
    FROM EQUIPMENT_SPECS, SPECIFICATION, EQUIPMENT_ATTRIBUTE FULL OUTER JOIN ATTRIBUTE ON ATTRIBUTE.INDX=EQUIPMENT_ATTRIBUTE.INDX
    WHERE (EQUIPMENT_SPECS.ETES_SPECIFICATION=SPECIFICATION.CWSP_CODE) 
    AND (EQUIPMENT_SPECS.PK_EQUIPMENT_SPECS=EQUIPMENT_ATTRIBUTE.COMMONKEY) 
    AND (SPECIFICATION.PK_SPECIFICATION=ATTRIBUTE.COMMONKEY)
    Merci

  12. #12
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye comme cela et dis-nous ce qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s.CWSP_CODE, a.INDX, s.CWSP_DESCRIPTION, a.CWAT_NAME, ea.ETAT_VALUE, es.ETES_EQUIPMENT, ea.INDX 
    FROM  EQUIPMENT_SPECS es INNER JOIN SPECIFICATION        s ON es.ETES_SPECIFICATION = s.CWSP_CODE
                             INNER JOIN EQUIPMENT_ATTRIBUTE ea ON es.PK_EQUIPMENT_SPECS = ea.COMMONKEY
                             FULL OUTER JOIN ATTRIBUTE a ON a.INDX = ea.INDX AND s.PK_SPECIFICATION = a.COMMONKEY

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Points : 75
    Points
    75
    Par défaut
    J'ai rajouté un "a" a la derniere ligne, juste apres ATTRIBUTE sinon, ca ne marchait pas.

    Le résultat de la requete est niquel

    Youhou !!!

    Maintenant, il faut que je puisse faire la meme chose sous Crystal Report et c'est pas une mince affaire ...

    Merci beaucoup
    P.S : si vous connaissais un bon endroit pour une aide Crystal, je suis prenneur

  14. #14
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Worldofdada
    J'ai rajouté un "a" a la derniere ligne, juste apres ATTRIBUTE sinon, ca ne marchait pas.
    Exact : j'ai corrigé pour ceux que la réponse intéresserait.

  15. #15
    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
    Citation Envoyé par Médiat
    Citation Envoyé par plaineR
    Ma réponse n'est pas satisfaisante ?
    Comme le dit Laurent, si sa version est la 7.1.4 le FULL OUTER JOIN ne va pas bien marcher...
    Cela ne marcherait pas en 8i non plus, mais Worldofdada avait déjà donné la version quand j'ai répondu

  16. #16
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par plaineR
    Cela ne marcherait pas en 8i non plus, mais Worldofdada avait déjà donné la version quand j'ai répondu
    Désolé

Discussions similaires

  1. [MySQL] Requete basic mais compliqué pour moi
    Par omelhor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/04/2011, 11h20
  2. Requete un peu chaude pour moi
    Par Ptij16 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/05/2008, 18h52
  3. Requete concernant des dates un peu complexe (pour moi)
    Par fayred dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/02/2008, 09h26
  4. Requete un peu compliqué pour moi
    Par passie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/04/2006, 16h08
  5. Requête un peu trop compliqué pour moi
    Par Kokito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 16h17

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