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 :

Comparaison entre deux colonnes si vide alors vérifier une autre table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut Comparaison entre deux colonnes si vide alors vérifier une autre table
    Bonjour,

    je ne sais pas vraiment comment aborder le sujet...

    J'ai 2 tables différentes disons A et B

    Mon soucis est de contrôler des données dans une 3 eme tables (C) par rapport aux données existantes soit en A soit en B( avec if enfin des iif dans mon cas ) mais pour faire ce contrôle il me faut d'abord contrôler qu'une donnée existe dans ma table A pour en récupérer les données sinon dans ma table B selon une autre donnée sinon contrôler que ma valeur dans ma table C est une valeur par défaut.

    J'ai un peu de mal à visualiser le SQL ...

    Si vous sauriez au moins m'aiguiller, je ne vous en remercierais que grandement !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'ai un peu de mal à visualiser le SQL ...
    Et moi j'ai un peu de mal à visualiser votre besoin !

    Un exemple à nous donner pour faciliter la compréhension ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    Bonjour et merci de s'y intéressé

    Pour poser le problème plus précisément :

    4 tables A,B,C,D

    Ma table D possède des ID

    Je vérifie que cet ID existe en A si c'est le cas je contrôle que mes données de ma table C sont bien = à mes données de ma table A ( via des iif)
    Si mon ID n'existe pas dans la table A, je vais voir dans ma table B, s'il existe je regarde les données en B pour les comparer à mes données en C (via des iif)
    Sinon mon iif me permet de contrôler une valeur par défaut non présente en A et B

    Là ou je bloque c'est vraiment au niveau de la syntaxe vérifier que l'ID existe en A sinon en B (ca peut paraitre simpliste peut être mais je suis néophyte :p)

    encore merci pour votre aide

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Après ces explications, j'ai déjà l'impression qu'il y a des redondances de données dans votre BDD, ce qui veut dire qu'elle n'est pas modélisée correctement.
    À moins que ce soit des données récupérées que vous devez analyser.

    Comme on est dans le forum consacré au langage SQL, je vais essayer de donner des pistes en langage SQL normalisé, même si votre évocation du iif me laisse à penser que vous avez un SQL avec des particularités.

    vérifier que l'ID existe en A sinon en B
    La requête ci-dessous va afficher id_A s'il existe ou NULL, idem pour id_B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT D.id, 
    	A.id AS id_A, 
    	B.id AS id_B
    FROM D
    LEFT OUTER JOIN A ON A.id = D.id
    LEFT OUTER JOIN B ON B.id = D.id
    Ensuite, pour comparer la colonne col1 de la table C avec la même colonne des tables A et B, on peut faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT D.id, 
    	A.id AS id_A, A.col1, C1.col1,
    	B.id AS id_B, B.col1, C2.col1
    FROM D
    LEFT OUTER JOIN A ON A.id = D.id
    	LEFT OUTER JOIN C1 ON C1.col1 = A.col1
    LEFT OUTER JOIN B ON B.id = D.id
    	LEFT OUTER JOIN C2 ON C2.col1 = B.col1
    Si l'id de D existe dans A alors la requête affiche A.col1 et si cette valeur de col1 existe dans la même colonne de C alors elle s'affiche sinon NULL.

    Votre besoin reste quand même obscur !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    Cette requête s'inscrit dans un besoin de vérifier la cohérence de données suite à un déplacement de celles-ci.

    Je vous remercie pour l'exemple et vais voir comment l'adapter Le travail ne doit pas non plus être fait par les aidants !

    effectivement, access à ses particularités...

Discussions similaires

  1. Comparaison entre deux colonnes
    Par stade13 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 06/03/2015, 11h07
  2. [Débutant] colonne liées aux données d'une autre table
    Par Lendcap dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/04/2012, 22h26
  3. Choisir une colonne selon un champs d'une autre Table
    Par DzBadBoy dans le forum Access
    Réponses: 6
    Dernier message: 03/10/2009, 16h01
  4. [AC-2007] Zone de liste "vide" tirée d'une autre table
    Par glooping dans le forum IHM
    Réponses: 4
    Dernier message: 09/09/2009, 17h43
  5. Réponses: 1
    Dernier message: 23/01/2007, 15h57

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