|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
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 :
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 :
Citation:
D'ou mon interrogation ??? En vous remerciant d'avance. P.S. Je fonctionne sous SQL Server 2000. |
|||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
Je comprend votre interrogation, et je trouve bizarre que cela fonctionne ... Sinon j'aurai directement écrit : Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
10
|
|
|
#3 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
En fait, les SELECT font appel à des tables provenant de BD différentes. La table "emploi" provient de la BD Production, la table "inform" provient de la BD Statistiques et la table temporaire est stocké dans la BD "tempdb".
Peut-être le fait d'avoir des BD différentes explique-t-il cette "bizarrerie" ? De plus, je dois absolument convertir la colonne NAS en CHAR car la table "inform" est une table basé sur une BD AS/400 ou le champs nasc est en CHAR. Donc pour faire la jointure, les deux colonnes doivent être du même type. |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Bonjour,
Je viens de découvrir une autre erreur. Dans le SELECT imbriqué, si on isole le SELECT entre paranthèse ( dans le cas présent: select nasc from #temp01), un message d'erreur apparaît: "Invalid column name nasc". Lorsque le SELECT est imbriqué, aucun message d'erreur. |
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Lorsque vous faites ceci : Code sql :
Si #temp01 n'a pas de colonne nasc, c'est la colonne nasc de la table inform qui est prise en compte dans votre sous requête, (donc vous comparez avec une liste de N fois la même valeur, celle de la colonne nasc pour la ligne qui est évaluée, où N correspond au nombre de lignes de la table #temp01...) Et dans ce cas, forcément, votre condition sera toujours vraie ! Si vous écrivez ceci : Code sql :
|
||||
|
|
00
|
|
|
#6 | |||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Citation:
Pour résoudre les bases de données, il suffit de qualifier les objets : Code :
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||
|
00
|
Copyright © 2000-2012 - www.developpez.com