Requête DELETE

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 20 juin 2011 à 08:56
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 14 avril 2012 à 13:14
Bonjour,

Je souhaite effectuer une requête SQL DELETE, jusque la rien de compliqué mais c'est la premiere fois que je dois faire une requete avec jointures.

En effet, je souhaite supprimer tout ce qu'il y a dans la table F_NOMENCLAT mais avec une condition discriminante sur la table F_ARTICLE.

Dans F_ARTICLE, AR_REF correspond a AR_REFDET de la table F_NOMENCLAT.

Je souhaite supprimer tout dans la table F_NOMENCLAT quand dans F_ARTICLE on a AR_SOMMEIL = 0



Mon driver ODBC n'autorise que le LEFT OUTER JOIN d’après la notice.

J'avais pensé à faire

DELETE FROM F_NOMENCLAT N 
LEFT JOIN F_ARTICLE A 
ON (N.NO_REFDET = A.AR_REF) 
WHERE A.AR_SOMMEIL = 0


MAis en vain,



Une idée ?

Merci d'avance

3 réponses

Utilisateur anonyme
21 juin 2011 à 00:27
delete from F_NOMENCLAT where AR_REF in
 (
   select  AR_REFDET as AR_REF F_NOMENCLAT where AR_SOMMEIL = 0
 );


Grosso modo quelque chose de ce style là.
La sous requête sert à renvoyer les lignes qui ont AR_SOMMEIL à 0. J'ai volontairement changer le nom AR_REFDET en AR_REF car je pense que ça peut coincer avec le requête appelante qui utilises AR_REF dans la condition...

--
Pylouq
0
B2D2 Messages postés 1 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 30 juin 2011
30 juin 2011 à 10:16
Je te conseille

DELETE FROM F_NOMENCLAT
FROM F_NOMENCLAT N
INNER JOIN F_ARTICLE A
ON (N.NO_REFDET = A.AR_REF)
WHERE A.AR_SOMMEIL = 0

(oui, il y a bien 2 FROM !)
0
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
14 avril 2012 à 13:14
DELETE F_NOMENCLAT 
FROM F_NOMENCLAT N INNER JOIN F_ARTICLE A 
ON N.NO_REFDET = A.AR_REF
WHERE A.AR_SOMMEIL = 0 

Ca, ca marche en SQL Server si le champ A.AR_REF est index unique
Ou
DELETE F_NOMENCLAT 
FROM F_NOMENCLAT N INNER JOIN 
(SELECT DISTINCT AR_REF FROM F_ARTICLE WHERE AR_SOMMEIL = 0) A 
ON N.NO_REFDET = A.AR_REF


Yann
0
Rejoignez-nous