Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 09/03/2011, 13h36   #1
Nouveau Membre du Club
 
Étudiant
Inscription : février 2005
Messages : 116
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2005
Messages : 116
Points : 29
Points : 29
Envoyer un message via AIM à xavier1936 Envoyer un message via MSN à xavier1936
Par défaut Update et jointure externe

Bonjour,

Je voudrais un update avec des jointures externes.

Voici ma requête :

Code :
1
2
3
4
5
6
7
UPDATE table1
SET mon_champ = 'test'
LEFT OUTER JOIN table2 ON table1.id = table2.id 
LEFT OUTER JOIN table3 ON table3_id=table2.id 
LEFT OUTER JOIN table4 ON table4.id=table3.id 
WHERE table1.date1 > '28/04/2011' AND table1.date2 < '25/09/2011' 
AND table4.intitule NOT IN ('toto')
La requete me retourne :
Citation:
La commande SQL ne se termine pas correctement
xavier1936 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h23   #2
Membre éprouvé
 
Avatar de xdescamp
 
Homme Xavier Descamps
Inscription : octobre 2008
Messages : 297
Détails du profil
Informations personnelles :
Nom : Homme Xavier Descamps
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2008
Messages : 297
Points : 422
Points : 422
Envoyer un message via Skype™ à xdescamp
Bonjour,

Effectivement, on ne peut mettre qu'une seule table dans un UPDATE, et il n'est pas possible de jointurer comme vous essayez.
Il faut trouver un autre moyen de filtrer les enregistrements que vous voulez mettre à jour :
- utiliser un EXISTS ou NOT EXISTS
- utiliser une sous-requête pour ramener la clé primaire des enregistrements avec quelque chose du style
Code :
1
2
3
4
5
6
7
UPDATE table1
SET mon_champ = 'test'
WHERE (table1.col_pk1, table1.col_pk2) IN
  (SELECT col_pk1, col_pk2
   FROM table1
   LEFT OUTER JOIN table2 ON table1.id = table2.id
   ...
xdescamp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h10.


 
 
 
 
Partenaires

Hébergement Web