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 ...
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
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 moi je bloque dessus et je suis pas specialiste sql
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