|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Serge LEWDEN Inscription : novembre 2009 Messages : 3 ![]() |
Bonjour,
Je suis tombé par hasard sur ce cas et je ne parviens pas à l'expliquer. Pouvez vous m'aider ?? J'exécute une requête du style suivant sur une base SQL Server 2008 R2 : SELECT * FROM Table WHERE Cle_etrangère1 IN (SELECT col_inconnue FROM Table2 WHERE critère_sur_table2) ==> Je tiens à préciser que la sous requête exécutée seule : "SELECT col_inconnue FROM Table2 WHERE critère_sur table2" génère une erreur SQL Server de compilation car la colonne demandée "col_inconnue" n'appartient pas à la table "Table2" MAIS la requête complète fonctionne !!! il semble que le filtre "WHERE cle_etrangère1 IN ..." ne s'applique pas !!! Pouvez vous me dire pourquoi ?? |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Bonjour,
On peut avoir la requête réelle qui vous genère votre erreur ? Merci d'avance ++ |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
parce que col_inconnue appartient a votre 1er table (Table) et non a la seconde (table2) ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Serge LEWDEN Inscription : novembre 2009 Messages : 3 ![]() |
Citation:
SELECT * FROM dbo.aspnet_Roles WHERE ApplicationID in (SELECT RoleId FROM dbo.aspnet_Applications WHERE applicationName = 'rouge') RoleId n'existe pas dans la table "dbo.aspnet_Applications", mais existe bien dans "dbo.aspnet_Roles". Si l'on prend une colonne qui n'existe pas du tout ou une colonne d'une autre table de la base de données, SQL Server génère bien une erreur... |
|
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Il n'y a pas de bug la dedans. Cela revient à écrire cela (en mettant un alias) :
Code :
++ |
||
|
00
|
|
|
#6 | |||
|
Invité de passage
![]() Serge LEWDEN Inscription : novembre 2009 Messages : 3 ![]() |
Citation:
Merci beaucoup de vos réponses. |
|||
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
D'où l'importance de toujours qualifier :
- les objets (tables, vues, fonctions, procédures stockées) par le nom du schéma auquel ils appartiennent - le nom des colonnes par le nom de la table ou de la vue (ou par leur alias) @++
__________________
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