Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 04/08/2008, 12h33   #1
FMJ
Membre du Club
 
Inscription : octobre 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 181
Points : 61
Points : 61
Par défaut DELETE avec jointure

Bonjour,

A titre de curiosité, est-ce quelqu'un saurait pourquoi la syntaxe suivante renvoie une erreur ?

Code :
1
2
3
DELETE FROM Table1 
RIGHT JOIN Table2 ON Table1.ID1 = Table2.ID1, Table1.ID2 = Table2.ID2
WHERE Table2.Champ = 'Toto'
Alors que la syntaxe suivante fonctionne correctement ?

Code :
1
2
3
DELETE Table1 FROM Table1 
RIGHT JOIN Table2 ON Table1.ID1 = Table2.ID1, Table1.ID2 = Table2.ID2
WHERE Table2.Champ = 'Toto'
Comme initialement, je n'avais pas réussi à trouver pourquoi la première syntaxe ne marchait pas, j'avais essayé la suivante qui ne fonctionnait pas d'avantage ???!!!

Code :
1
2
DELETE Table1 FROM Table1 
WHERE (Table1.ID1, Table1.ID2) = (SELECT Table1.ID1, Table1.ID2 FROM Table2 WHERE Table2.Champ = 'Toto')
Merci d'avance.
FMJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 13h32   #2
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 782
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 782
Points : 1 853
Points : 1 853
La syntaxe du DELETE ne contient pas de FROM pour spécifier le nom de la table sur laquelle on supprime.
D'ailleurs le From de la 2° requête est inutile de cette manière il me semble.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 17h25   #3
FMJ
Membre du Club
 
Inscription : octobre 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 181
Points : 61
Points : 61
Salut

Alors pas tout à fait me semble-t-il.

Le cours de SQLpro donne la syntaxe suivante :

Code :
1
2
DELETE [FROM] nom_table_cible 
[WHERE condition]
Le FROM est optionnel mais bel et bien utilisable ???!!!


Celle de la doc SQL Server est la suivante :

Code :
1
2
DELETE FROM authors
WHERE au_lname = 'McBadden'
J'y ai juste trouvé un indice qui m'a mis la puce à l'oreille :

Code :
1
2
3
4
DELETE titleauthor
FROM titleauthor INNER JOIN titles 
   ON titleauthor.title_id = titles.title_id
WHERE titles.title LIKE '%computers%'

Merci
FMJ 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 04h53.


 
 
 
 
Partenaires

Hébergement Web