Bonjour,

J'aurais un petit problème à vous soumettre

Dans un select imbriqué, il semble que la clause Where ne s'exécute pas
correctement.

Je m'explique:

Voici le code qui fonctionne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select noemploi, cast(nas as char(9)) as nasc
into #temp01
from emploi
where idsynm_o = 11 and noaccreditation = 1
 
select * 
from statistiques..inform 
where statistiques..inform.nasc in (select nasc from #temp01)
order by statistiques..inform.nasc, statistiques..inform.an
Le premier SELECT remplit une table temporaire selon certaines conditions.

Le second SELECT extrait les informations en fonction de la clause Where (qui recherche les informations contenues dans la table temporaire).

Ce script fonctionne correctement. Cependant il survient un problème dans le contexte suivant:

1. Le script est exécuté une fois correctement.

2. Pour faire des tests, le nom de la colonne "nasc" de la table temporaire a été modifiée en "nascar", sans toutefois modifier le nom de la colonne dans le SELECT imbriqué de la clause Where.

3. La table temporaire est supprimée et le script est exécuté de nouveau.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
drop table #temp01
 
select noemploi, cast(nas as char(9)) as nascar
into #temp01
from emploi
where idsynm_o = 11 and noaccreditation = 1
 
select * 
from statistiques..inform 
where statistiques..inform.nasc in (select nasc from #temp01)
order by statistiques..inform.nasc, statistiques..inform.an
Normalement, je pense que l'exécution de ce script modifié (et erroné) entraine un message d'erreur du type:
"Invalid Column Name".
Pourtant, le script s'exécute. Si on ne rend pas compte de l'erreur dans le nom de la colonne, l'extraction qui en résulte est complètement erronée.

D'ou mon interrogation ???

En vous remerciant d'avance.

P.S. Je fonctionne sous SQL Server 2000.