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

 MySQL Discussion :

Débutant: UPDATE d'une table avec sous-requête ?


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut Débutant: UPDATE d'une table avec sous-requête ?
    Bonjour,

    Je dispose de 2 tables :

    table1
    idtab1
    nom_tab1

    1,n
    1,1

    table2
    idtab2
    idtab1 FK
    nom_tab2
    is_master BOOLEAN DEFAULT 0

    Je souhaite sélectionner table2 table1 selon la FK, et fixer is_master de table2 à 1 selon MIN(idtab2) par groupe.

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT t1.idtab1, t1.nom_tab1, t2.idtab2, t2.nom_tab2 FROM table1 AS t1 join table2 AS t2 USING (idtab1);
     
    t1.idtab1 t1.nom_tab1 t2.idtab2 t2.nom_tab2
    1 matab1 1 matab2
    1 matab1 2 matab2
    2 matab11 3 matab22
    2 matab11 5 matab22
    Je ne souhaite afficher que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1 matab1 1 matab2
    2 matab11 3 matab22
    Je pense pouvoir passer par un curseur pour faire ceci, mais je voudrais plutôt voir s'il y a moyen de passer par un UPDATE avec une sous-requête (ou autre si vous avez mieux )

    Sauriez-vous comment faire ceci ?

    En vous remerciant,

    C. Tobini

  2. #2
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Dans ton contexte, le résultat voulu peut être obtenu sans ajouté le champ master.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT t1.idtab1, t1.nom_tab1, t2.idtab2, t2.nom_tab2 
      FROM table1 AS t1 
               JOIN table2 AS t2 USING (idtab1)
               JOIN table2 AS t3 USING (idtab2)
      GROUP BY t1.idtab1, t1.nom_tab1,t2.idtab2, t2.nom_tab2
      HAVING t2.idtab2=MIN(t3.idtab2)
    Mais sinon, un UPDATE peut tout à fait contenir une jointure si c'est là la question de fond.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Bonjour et merci de la réponse, c'est nickel !

    Bonne journée,

    C. Tobini

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 05/09/2006, 17h01
  2. Remplir une table avec un requête
    Par curt dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2006, 19h17
  3. Update d une table avec plusieurs valeurs
    Par Nadaa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2006, 08h58
  4. Réponses: 3
    Dernier message: 10/02/2006, 15h48
  5. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

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