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 :

Requête sur deux tables avec incrément de champ


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    LB
    LB est déconnecté
    Membre actif
    Inscrit en
    Février 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 33
    Par défaut Requête sur deux tables avec incrément de champ
    Bonjour,

    Table1 avec les champs Nom et Nombre
    Table2 avec le champ Nom

    J'espérais que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Table1, Table2
    SET Table1.Nombre = Table1.Nombre + 1
    WHERE Table1.Nom = Table2.Nom
    incrémenterait le champ Nombre chaque fois que les champs Nom seraient égaux dans Table1 et Table2.
    A priori, c'eut été trop facile...

    Merci pour les conseils que vous voudrez bien m'apporter.

  2. #2
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Hum... Ça ne respecte pas la norme SQL. Vous utilisez MySQL ?


    Bref, avec MySQL quelque chose comme ça devrait quand même aller :


    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update t1, t2
        set  t1.nombre =  t1.nombre + 1, t2.nombre =  t2.nombre + 1
        where t1.nom = t2.nom ;

  3. #3
    LB
    LB est déconnecté
    Membre actif
    Inscrit en
    Février 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 33
    Par défaut
    Merci fsmrel de vous pencher sur mon problème.

    Il n'y a pas de champ Nombre dans Table2.

    Je souhaite simplement incrémenter chaque champ Nombre de Table1 chaque fois que les champs Nom de Table1 et Table2 sont identiques.

    J'utilise SQL via C++Builder pour gérer des tables Access.

    Merci.

  4. #4
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    En SQL classique :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update t1
        set nombre = nombre + 1
        where exists (select *
    	          from    t2 
                      where   t1.nom = t2.nom) ;

  5. #5
    LB
    LB est déconnecté
    Membre actif
    Inscrit en
    Février 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 33
    Par défaut
    Je n'ai pas de message d'erreur mais mes champs Nombre ne sont pas alimentés.

  6. #6
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    J'ai testé en ACCESS natif : ça marche parfaitement.

  7. #7
    LB
    LB est déconnecté
    Membre actif
    Inscrit en
    Février 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 33
    Par défaut
    Je vous joins mes quelques lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ADOQuery->SQL->Clear();
    ADOQuery->SQL->Add("UPDATE TableCumul");
    ADOQuery->SQL->Add("SET Nombre = Nombre + 1");
    ADOQuery->SQL->Add("WHERE EXISTS(SELECT * FROM MesAgences WHERE TableCumul.Agence = MesAgences.Agence)");
    ADOQuery->ExecSQL();
    ou
    TableCumul a pour champs Agence et Nombre
    MesAgences a pour champs Agence et Nombre

    Merci.

  8. #8
    LB
    LB est déconnecté
    Membre actif
    Inscrit en
    Février 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 33
    Par défaut
    Rectificatif, il fallait lire

    "ou
    TableCumul a pour champs Agence et Nombre
    MesAgences a pour champ Agence"

Discussions similaires

  1. Requête sur trois tables avec deux sommes
    Par gpz1963 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/09/2013, 17h38
  2. Requête sur deux tables avec fonction COUNT
    Par islande dans le forum Langage SQL
    Réponses: 13
    Dernier message: 12/08/2013, 16h06
  3. sql requête sur deux tables avec cumul..
    Par Chris'S dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/01/2010, 23h23
  4. Réponses: 9
    Dernier message: 09/05/2009, 17h34
  5. Réponses: 1
    Dernier message: 25/04/2009, 11h31

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