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 :

Problème jointure basique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut Problème jointure basique
    Bonjour à tous, j'ai un petit problème de jointure que je n'arrive pas à résoudre.
    Dans la ma table ACHAT j'ai un champs DEMANDE_ID.
    J'ai une table DEMANDE avec DEMANDE_ID, LIBELLE

    Je veux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select a.champ1, a.champs2, a.champ3, b.LIBELLE
    FROM ACHAT a, DEMANDE b
    where a.DEMANDE_ID = b.DEMANDE_ID
    Le problème c'est que j'ai 3 libellés dans la table DEMANDE et du coup le résultat me multiplie les lignes par 3.

    J'essaye avec un (+) de chaque côté mais ça fonctionne pas

    Ça doit pas être grand chose, mais si quelqu'un peut me dépanner

    Merci.

  2. #2
    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
    DEMANDE_ID n'est pas défini en tant que clef primaire de la table DEMANDE ?
    Bizarre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut
    Merci Waldar de ta réponse.
    Effectivement lors de la création de la table DEMANDE, le champ DEMANDE_ID n'est pas défini en clé primaire.

    Ca provient de la?

    Si oui je peux modifier le champ en primarykey avec un ALTER Table?

    Merci d'avance

  4. #4
    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
    Il faut d'abord nettoyer votre table de ses doublons : vous ne pourrez pas définir une contrainte si elle n'est pas vérifiable.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut
    La plupart des tables n'ont pas beaucoup de données, voir pas du tout pour certaines.

    Donc c'est possible alors?
    Ca doit etre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE DEMANDE MODIFY DEMANDE_ID
    mais après?
    ??

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut
    Je viens de créer la PRIMARY KEY sur le champ DEMANDE_ID de la table DEMANDE, et ca change rien au niveau du résultat de la requête...
    J'ai toujours mon nombre de lignes multiplié par 3, c'est à dire le nombre de type de demande...

    Je tiens à préciser que dans ma requête j'ai des OR.
    En fait je fais une recherche sur plusieurs champs de ma table ACHAT..

    Est-ce que ca pet provenir de la ?

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il faut d'abord nettoyer votre table de ses doublons : vous ne pourrez pas définir une contrainte si elle n'est pas vérifiable.
    Dans le cas général c'est possible mais...
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> create table t_sans_pk(x int);
     
    Table created
     
    SQL> insert into t_sans_pk(x) values(1);
     
    1 row inserted
     
    SQL> insert into t_sans_pk(x) values(1);
     
    1 row inserted
     
    SQL> alter table t_sans_pk add constraint t_sans_pk_pk primary key(x);
     
    alter table t_sans_pk add constraint t_sans_pk_pk primary key(x)
     
    ORA-02437: impossible de valider (MNI.T_SANS_PK_PK) - violation de la clé primaire
     
    SQL> alter table t_sans_pk add constraint t_sans_pk_pk primary key(x) deferrable novalidate;
     
    Table altered
     
    SQL>

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut
    C'est bon merci à vous j'ai réussi à faire ce que je voulais.

    Concernant la jointure mon problème venait du fait que j'avais pas mal de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    or champ1 like '%var%' or champ2 like '%var%' or champ3 like '%var%'
    Et fallait mettre entre parenthèse les or

    Merci à vous!

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

Discussions similaires

  1. Problème jointures externes BO
    Par leelee dans le forum Designer
    Réponses: 1
    Dernier message: 17/03/2007, 09h29
  2. Problème jointure gauche qui ne passe plus sous MySQL 5
    Par OuiOui007 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/09/2006, 10h33
  3. Réponses: 6
    Dernier message: 04/07/2006, 11h56
  4. Problème jointure
    Par RiPSO dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/04/2006, 23h55
  5. Problème jointure de tables
    Par Carter dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/02/2006, 12h41

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