selection des donnees qui ne remplissent pas une condition [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 23-08-2004 à 17:14:13
Salut, 
 
Je ne sais pas quel est ton SGBD... 
 
Mais essaye un  
Select * from C where 
C.ref NOT IN(select L.ref from L where periode à ne pas prendre)
Marsh Posté le 23-08-2004 à 17:39:08
Il suffit de faire une jointure externe de ce genre : 
 
| Code : 
 | 
 
 
En gros, si L2.REF est null, c'est qu'il n'y a pas de ligne dans L pour le contact, avec une date supérieure au 01/06/2004. 
 
Y a sûrement des petites erreurs d'écriture, mais je te laisse les corriger.
Marsh Posté le 23-08-2004 à 17:53:31
je suis sous MS SQL SERVER 
 
apparemment, il a du mal a digerer la requete 
Marsh Posté le 23-08-2004 à 17:57:47
| Beegee a écrit : Il suffit de faire une jointure externe de ce genre :  
   | 
 
 
aucun resultat retourné   
 
Marsh Posté le 24-08-2004 à 09:59:19

Marsh Posté le 24-08-2004 à 11:18:53
select C.* 
FROM C 
WHERE C.ID not in (select L.ID from L) 
AND C.DATE_CREA > la_date 
 
Pkoi se faire chier avec des trucs compliqués quand des trucs simples marchent  
 
 
Pour remplacer le NOT IN qui est très lent, tu peux faire : 
 
select C.* 
FROM C 
WHERE C.DATE_CREA > la_date 
AND NOT EXISTS (SELECT NULL FROM L WHERE L.ID = C.ID)
Marsh Posté le 24-08-2004 à 11:30:25
Arjuna : la date de création est dans la table L  
 
 
Donc en gros, s'il peut faire des EXISTS, ça donnerait : 
 
| Code : 
 | 
Marsh Posté le 24-08-2004 à 11:59:06
| Beegee a écrit : Arjuna : la date de création est dans la table L  
 | 
 
  
 
 
mais apparemment, cette requette prend en compte des relations superieures au 01/06/2004  et je vois pas prq ...
 et je vois pas prq ...
Marsh Posté le 24-08-2004 à 12:33:50
Essaie ça (avec des alias pour L, mais je trouve ça bizarre) 
 
select L1.REF, L1.DATE_CREA, C.CONTACT  
FROM C, L1 
WHERE L1.DATE_CREA < la_date  
AND L1 LIKE 'LN%' 
AND NOT EXISTS (SELECT NULL FROM L2 WHERE L2.ID = C.ID AND L2.DATE_CREA >= la_date)
Marsh Posté le 24-08-2004 à 12:34:30
Sinon, PKOI tu mets des espaces autour des "/" ? A mon avis, t'as un problème de formattage de la date là...
Marsh Posté le 24-08-2004 à 12:39:30
| Arjuna a écrit : Essaie ça (avec des alias pour L, mais je trouve ça bizarre)  | 
 
 
Il te manque le nom de la table (L)  
 
 
et +1 pour le formatage des dates ... c'est sûrement les espaces qui font que le résultat n'est pas correct 
Marsh Posté le 24-08-2004 à 14:14:52
pour le formatage, c'est sql server enterprise qui les ajoute automatiquement 
Marsh Posté le 24-08-2004 à 14:20:43
je viens de faire un test et certaines ref en cause ont disparues mais j'ai retrouve des contacts qui ne devraient pas y etre 
 
galere 
Marsh Posté le 25-08-2004 à 11:08:36

Marsh Posté le 23-08-2004 à 17:01:48
bonjour a tous 
 
 moi je bloque dessus et je suis pas specialiste sql
 moi je bloque dessus et je suis pas specialiste sql  
 
voila, j'ai 2 tables C et L et je dois selectionner des personnes dans C qui n'ont pas de reference dans L au dela d'une certaine date.
La date est dans L et je fais la liaison avec une cle commune aux 2 tables : L.REF et C.REF_ANN.
je reussi a selectionner les enregistrements de toutes les personnes de C ayant une reference dans L anterieure a la date mais je n'arrive pas a specifier qu'il ne faut pas qu'il y ait de reference au dela de cette date.
vous voyez comment faire
voila ma requete actuelle :
mille mercis d'avance
---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391