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 :

[Oracle 8.1.7] affichage d'un valeur d'un autre champ


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 138
    Points : 70
    Points
    70
    Par défaut [Oracle 8.1.7] affichage d'un valeur d'un autre champ
    OS : Windows
    Base : Oracle 8.1.7

    Bonjour,

    question bete :
    existe t-il un moyen de recuperer la valeur d'un champ d'une table sans passer par une jointure?

    par exemple :

    de type :

    select a1,a2,(select b1 from b where .....) from a where .....

    bonne reception

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    oui, à condition que ton sous-select te ramène une ou zéro ligne.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    merci,

    et avec l'exemple suivant :

    Quel serait la requete

    table a(a1,a2,a3)
    ______a1______a2______a3______
    ______REF1____CLI_____toto_____
    ______REF2____ _____titi_____
    ______REF3____ _____tata_____
    ______REF4____CLI_____tutu_____

    table b(b1,b2)
    ______b1______b2______
    ______REF1____NOM1___
    ______REF2____NOM2___
    ______REF3____NOM3___
    ______REF4____NOM4___

    Apres la selection sur la table a, je voudrais le résultat suivant :
    ______REF1____CLI_____NOM1_____
    ______REF2____ _____titi_____
    ______REF3____ _____tata_____
    ______REF4____CLI_____NOM4_____

    par avance merci

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Je suis navré de te dire qu'il va bien falloir passer par une jointure.... c'est si grave que ça ??

    Ce serais bien de spécifier ce que tu veux plutot que de le laisser deviner mais bon... d'aprés ce que j'ai compris, tu veux qu'il y ai une correspondance entre tes colonnes a1 et b1 (la fameuse jointure maudite) , que la 2ieme colonne de ta requête reprenne la valeur de a2, et que la 3ieme colonne prenne soit la valeur de b2, soit la valeur de a3 lorsque la colonne a2 est nulle... j'ai bon ?

    dans cette hypothèse voici comment je procèderais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select a1, a2, decode(a2,null,a3,b2)
    from a,b
    where a1 = b1

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    Oui desole pour le manque d'explication.

    J'avais deja poser ma question sur le forum "langage SQL" et j'ai oublié de mettre le lien. Mais c'est bien ca.

    Le pb c'est que je suis passer par une jointure mais qui n'est pas vraiement direct. Alors la requete est tres longue et de plus elle semble fausse car elle me retourne plus de ligne que désiré.

    merci quand meme

    Mais avec toutes vos infos, je devrais approché du resultat

    @+

    PS : lien discution "Langage SQL"
    http://www.developpez.net/forums/sho...d.php?t=203442

  6. #6
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Tu peux utiliser une sous-requête dans le SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.A1, A.A2,
           NVL((SELECT B.B2 FROM B WHERE A.A1 = B.B1 AND A.A2='CLI'),A.A3)
    FROM A
    Bloon

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par Bloon
    Tu peux utiliser une sous-requête dans le SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.A1, A.A2,
           NVL((SELECT B.B2 FROM B WHERE A.A1 = B.B1 AND A.A2='CLI'),A.A3)
    FROM A
    Bloon
    "A.A1 = B.B1" c'est aussi une jointure. D'une manière ou d'une autre, si tu dois faire une correspondance entre des colonnes de tables différentes, tu fera une jointure quel que soit la syntaxe que tu choisis ( = , IN, EXISTS...)

    Si ta requête te retourne trop de lignes, c'est peut etre bien qu'il manque une jointure justement. Si ton problème fonctionnel est complexe, il n'y a pas de miracle il va faloir utiliser des requêtes complexes. Ou bien séparer les choses en faisant des vues ou des fonctions...


    si elle reste longue, c'est un problème d'optimisation (index, stats etc...)

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    merci a tous pour vos contributions.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/05/2013, 14h37
  2. Réponses: 4
    Dernier message: 22/02/2011, 03h51
  3. [Oracle 8.1.7] affichage d'un valeur d'un autre champ
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/09/2006, 13h18
  4. champs reprenant la valeur d'un autre champs
    Par tojiji dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 16h40
  5. Réponses: 8
    Dernier message: 22/03/2006, 17h16

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