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

Requêtes et SQL. Discussion :

Mise à jour d'un champ sous condition de son existence dans la colonne d'une autre table


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut Mise à jour d'un champ sous condition de son existence dans la colonne d'une autre table
    Bonjour à tous,

    Je viens vers vous pour avoir votre avis sur une requête qui a pour but ceci:

    J'ai deux tables A et B

    La Table A a deux colonnes A1 et A2
    La Table B a deux colonnes B1 et B2

    Je souhaite Mettre à jour les champs de la colonne A1 comme suit: Si valeur dans A1 n'existe pas dans la colonne B1 alors tu update par la valeur X.


    Le critère que j'ai utilisé dans ma requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    In (SELECT [A1] FROM [B] WHERE [A1] <> B1).

    Je suis preneur de tous vos avis ou pistes!
    Merci d'avance!
    Bonne soirée

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    Salut,

    tu peux commencer par voir ce que te donne une requete de non correspondance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A.*, B.* FROM A LEFT JOIN B ON A.A1=B.B1 WHERE B.B IS NULL

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut
    Merci pour le retour rapide.

    Dans mon éditeur de requête (en mode création SQL) j'ai inséré

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE A, SET [A].[A1] = "X"
    WHERE A.*, B.* LEFT JOIN B ON [A].[A1]=[B].[B1] WHERE [B].[B) IS NULL

    Est-ce je m'en rapproche??
    Merci beaucoup pour vos retours

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    J'ai eu un laspus clavis, il manque le 1 dans le nom du champs :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A.*, B.* FROM A LEFT JOIN B ON A.A1=B.B1 WHERE B.B1 IS NULL

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut
    J'ai updaté ma requête dans ma fenêtre SQL mais elle tourne toujours pas ( erreur de syntaxe..).

    A votre avis, où ça coince??

    Encore merci pour votre aide!!

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    Si tu nous donnes ton SQL actuel ça nous aidera un peu

    reste que

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE A.*, B.* LEFT JOIN B ON [A].[A1]=[B].[B1] WHERE [B].[B) IS NULL
    ne pourra pas fonctionner du tout.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut
    Pardon, voilà ma requête SQL:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE [A] SET A1 = X"
    SELECT [A].*, [B].* LEFT JOIN [B] ON [A].[A1]=[ B].[ B1] WHERE [B].[B1] IS NULL

    Merci encore

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    bonjour,
    ce code manque quelque peu de rigueur, on ne peut pas avoir une requête commençant par UPDATE suivi d'un SELECT sauf si le SELECT est utilisé comme sous-requête et donc devrait être entre parenthèses.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE [A] SET A1 = X"
    SELECT [A].*, [B].* LEFT JOIN [B] ON [A].[A1]=[ B].[ B1] WHERE [B].[B1] IS NULL
    autre souci: il manque le guillemet ouvrant devant le X et on voit également un espace devant le nom de de la table [ B] et le nom du champ [ B1] dans la définition de la jointure ce qui va fatalement provoquer des erreurs.
    voici le code corrigé:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE A LEFT JOIN B ON A.A1 = B.B1 SET A1 = "X" WHERE B.B1 Is Null;

Discussions similaires

  1. Mise à jour de champ sous condition
    Par aiss57 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/07/2009, 21h57
  2. Mise à jour de champ sous conditions
    Par aiss57 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/06/2009, 15h05
  3. [PHP-JS] accessibilité d'un champ sous condition
    Par maraly dans le forum Langage
    Réponses: 1
    Dernier message: 08/08/2006, 16h31
  4. Somme de champs sous condition
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/08/2006, 14h47
  5. Afficher un champ sous condition
    Par Cantalou dans le forum Access
    Réponses: 24
    Dernier message: 01/02/2006, 14h25

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