Requête qui ne fonctionne pas [Résolu]

Signaler
Messages postés
74
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012
-
tif27940
Messages postés
74
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012
-
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

Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
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.
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
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.
Messages postés
74
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012

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é
Messages postés
74
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012

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?
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
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.
Messages postés
74
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012

merci cgandco c'était sa