J'ai les tables suivantes :
Je fais la requête UPDATE suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 TABLE CONTRIBUTEURS id_contributeur; nom_contributeur; prenom_contributeur;photo_contrib 1; MARTINO; Jean; martino-jean.jpg 2; JUBERT; Bob; jubert-bob.jpg 3; DOUPARD; Jacques; doupard-jacques.jpg TABLE FONCTIONS id_fonction; nom_fonction 1; Auteur 2; Traducteur 3; Illustrateur TABLE PARTICIPE id_contributeur;id_fonction 1;1 2;2 3;1 3;2
Après cette requête, la TABLE CONTRIBUTEURS contient donc ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 UPDATE CONTRIBUTEURS CB INNER JOIN PARTICIPE P ON CB.ID_CONTRIBUTEUR = P.ID_CONTRIBUTEUR INNER JOIN FONCTION F ON F.ID_FONCTION = P.ID_FONCTION SET CB.PHOTO_CONTRIB = NULL WHERE F.ID_FONCTION != 1 AND CB.PHOTO_CONTRIB IS NOT NULL
Je voudrais restreindre la portée du WHERE : NE PAS UPDATER si le contributeur exerce AU MOIS 2 FONCTIONS DONT L'UNE EST CELLE D'AUTEUR :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id_contributeur; nom_contributeur; prenom_contributeur;photo_contrib 1; MARTINO;Jean;martino-jean.jpg 2; JUBERT; Bob;NULL 3; DOUPARD;Jacques;NULL
DOUPARD Jacques ne serait pas concerné par l'UPDATE car il exerce à la fois les fonctions de traducteur et d'auteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id_contributeur; nom_contributeur; prenom_contributeur;photo_contrib 1; MARTINO; martino-jean.jpg (1 seule fonction exercée : auteur => update NON réalisé) 2; JUBERT; NULL (1 seule fonction exercée : traducteur => update réalisé) 3; DOUPARD; Jacques;doupard-jacques.jpg (2 fonctions exercées dont celle d'auteur => update NON réalisé)
Voyez-vous comment procéder pour arriver à l'effet escompté ? Merci.
Partager