Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/10/2007, 11h33   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
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 :
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 :
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 12h04   #2
Membre Expert
 
Avatar de Adjanakis
 
Inscription : avril 2004
Messages : 734
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : avril 2004
Messages : 734
Points : 1 281
Points : 1 281
Bonjour,

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

Code :
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.
__________________
Pensez au tag
Adjanakis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 11h45   #3
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Bonjour et merci de la réponse, c'est nickel !

Bonne journée,

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h19.


 
 
 
 
Partenaires

Hébergement Web