Requête qui ne fonctionne pas

Résolu
tif27940 Messages postés 74 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 21 février 2012 - 28 déc. 2011 à 10:16
tif27940 Messages postés 74 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 21 février 2012 - 29 déc. 2011 à 14:53
Bonjour,

voila j'ai une requête qui doit m'afficher les contacts de la table contact qui ne sont pas dans la table dossier avec une date d'ouverture supérieur ou égal a 6 mois et inférieur ou égale a 12 mois.
mais elle ne m'affiche rien alors qu'elle devrait au moins m'afficher le contact que j'ai rajouter dans la table contact et qui n'a pas de dossier
voila ma requête:
select Contact.Nom, Contact.Prenom, Contact.Civilite, Adresse.Tel, Adresse.Fax, Etablissement.Etablissement
from Contact, Adr_Contact, Adresse, Etablissement, Dossier
where Contact.Contact_Id=Adr_Contact.Contact_Id
and Adr_Contact.Adresse_Id=Adresse.Adresse_Id
and Adresse.Adresse_Id=Etablissement.Adresse_ID
and Contact.Fonc_Id=39
and Contact.Contact_Id NOT IN (
                               Select Contact_Id from Dossier 
                               where Dte_Ouverture <= dateadd(month,-6,getdate()) 
                               and Dte_Ouverture >=   dateadd(month,-12,getdate()) 
                              )
order by Contact.Nom, Contact.Prenom asc;


6 réponses

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
29 déc. 2011 à 14:36
Bonjour,

ton problème se trouve dans ta table dossier, il y a certainement une ligne avec le champ Contact_ID null.

si tu ajoutes Contact_ID is not null dans ta sous requête cela doit fonctionner.

select Contact.Nom, Contact.Prenom, Contact.Civilite, Adresse.Tel, Adresse.Fax, Etablissement.Etablissement
from Contact, Adr_Contact, Adresse, Etablissement, Dossier
where Contact.Contact_Id=Adr_Contact.Contact_Id
and Adr_Contact.Adresse_Id=Adresse.Adresse_Id
and Adresse.Adresse_Id=Etablissement.Adresse_ID
and Contact.Fonc_Id=39
and Contact.Contact_Id NOT IN (
                               Select Contact_Id from Dossier 
                               where Dte_Ouverture <= dateadd(month,-6,getdate()) 
                               and Dte_Ouverture >=   dateadd(month,-12,getdate()) 
                               and Contact_ID is not null
                              )
order by Contact.Nom, Contact.Prenom asc;



Vérifie également que c'est normal d'avoir Contact_ID null

Bonne journée



Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
3
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
28 déc. 2011 à 12:35
bonjour,

La table dossier ne doit pas être dans la clause FROM car elle n'intervient pas dans la requête principale.

As tu testé simplement :

select Contact.Nom, Contact.Prenom, Contact.Civilite, Adresse.Tel, Adresse.Fax, Etablissement.Etablissement
from Contact, Adr_Contact, Adresse, Etablissement
where Contact.Contact_Id=Adr_Contact.Contact_Id
and Adr_Contact.Adresse_Id=Adresse.Adresse_Id
and Adresse.Adresse_Id=Etablissement.Adresse_ID
and Contact.Fonc_Id=39
order by Contact.Nom, Contact.Prenom asc;


ce qui te donne une indication sur l'origine de l'erreur. ta requête principale ou ta sous requête

si elle fonctionne comme çà, fais le test de ta sous requête :

Select Contact_Id from Dossier 
where Dte_Ouverture <= dateadd(month,-6,getdate()) 
and Dte_Ouverture >=   dateadd(month,-12,getdate())


qui ne doit pas te retouner ton nouveau contact_ID


bonne journée




Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
tif27940 Messages postés 74 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 21 février 2012
28 déc. 2011 à 16:01
j'ai deja fait se test est séparement elle fonctionne mais dés que je les met ensemble a l'aide du not in elle ne m'affiche rien alors qu'elle devrait au minimum m'afficher le contacts que j'ai rajoutée dans la table contacts puisqu'il n'a aucun dossier lié
0
tif27940 Messages postés 74 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 21 février 2012
28 déc. 2011 à 16:14
je viens d'essayer le tout en enlevant le where c'est a dire juste le
select Contact.Nom, Contact.Prenom, Contact.Civilite, Adresse.Tel, Adresse.Fax, Etablissement.Etablissement
from Contact, Adr_Contact, Adresse, Etablissement
where Contact.Contact_Id=Adr_Contact.Contact_Id
and Adr_Contact.Adresse_Id=Adresse.Adresse_Id
and Adresse.Adresse_Id=Etablissement.Adresse_ID
and Contact.Fonc_Id=39
and Contact.Contact_Id NOT IN (Select Contact_Id from Dossier)
order by Contact.Nom, Contact.Prenom asc;



et même sa sa ne fonctionne pas est ce que sql server express ne gére pas les requête imbriquées?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
29 déc. 2011 à 14:38
Il faut retirer la table Dossier dans le from

from Contact, Adr_Contact, Adresse, Etablissement





Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
tif27940 Messages postés 74 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 21 février 2012
29 déc. 2011 à 14:53
merci cgandco c'était sa
0
Rejoignez-nous