Remonter d'une table générale à une table de tri (requete)

Résolu
Messages postés
26
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
28 novembre 2006
-
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
-
Bonjour

Je me suis créer une base de données pour stocker les nomenclatures de mes cartes électroniques ( 2ème passe tps avec l'info ).
Donc j'ai 2 tables. La premiere "Composant" qui liste tous les composants que j'utilise (description, réf fournisseur, fournisseur, une info True/False si obsolète). La deuxième ("All") liste les nomenclatures de mes cartes (nom carte, repère, réf fournisseur, quantité, un champ d'info complémentaire).

La réf. fournisseur est l'index de la table "Composant", la deuxième n'etant pas indexée.

Pour pouvoir supprimer facilement une nomenclature, je voudrais à partir d'une requète supprimer (directement ou qu'elle me donne une liste) les composants qui ne sont utilisés QUE par la carte que je supprime de la première table ("Composant").

ex:
Table Composant
Ref | Descrip | ...
R10345 | 10KOHM 5 % 1/4W | ...
C479 | 47nF 10% 50V 805 | ...

Table All
Rep | Ref | Carte
R24 | R10325 | PJTI5
R102 | R27185 | PJTI5
C10 | C479 | MOD_DTMF
R38 | R10325 | MOD_DTMF

Dans le cas présent, si je supprime la carte MOD_DTMF, il faudrait enlever le composant référencé C479, mais pas R10325 (car utilisé sur PJTI5) de la table "Composant".

merci d'avance.
Clénio

5 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
salut

essaie :
DELETE FROM TableComposant
WHERE Ref IN (SELECT Ref FROM TableAll WHERE Carte = 'MOD_DTMF')


AND Ref NOT IN (SELECT Ref FROM TableAll WHERE Carte <> 'MOD_DTMF')

ca va (normalement :)) supprimer les references concernant la carte MOD_DTMF sans supprimer ceux qui concernent egalement une autre carte.
Messages postés
105
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
14 février 2013
2
bonjour ! essais un truc dans le genre :

DELTE FORM (Table Composant] where ref not in (select ref from [Table All])
Messages postés
26
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
28 novembre 2006

Désolé mais ca marche pas. Ca me donne des erreurs (malgré la mise au propre du code).

J'ai essayé avec :
- INTERSECT
peut s'écrire : SELECT a,b FROM table1
WHERE EXISTS (SELECT c,d FROM table2 WHERE a=c AND b=d )

- EXCEPT
peut s'écrire : SELECT a,b FROM table1
WHERE NOT EXISTS ( SELECT c,d FROM table2 WHERE a=c AND b=d )

mais non, ca marche pas!

Si personne n'a d'autres idées, ba ... ca m'embeterait mais bon !
Messages postés
26
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
28 novembre 2006

nikel merci :)

en 2 étapes, je fais ce que je veux. merci bcp aieeeuuuuu!
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
de rien ;)