2010-11-25 11 views
1

に私は、Microsoft SQL Server 2005に働いていない、とするとき、私はこのクエリを実行します。は何この平均値は、SQL Server 2005の

select 
    F.E, 
    S.E 
from 
    Subject 

私はこれらのエラーを取得:

マルチパート識別子"FE"は縛られなかった。 複数の部分の識別子「S.E」はバインドできませんでした。

が、このクエリを実行すると、それは

select * from Subject 

正常に動作し、これらのエラーは何を意味するのですか?

答えて

7

エラーは、SQLサーバーがF.EおよびS.Eが何であるかを知らないことを意味します。 SがあなたのSubjectテーブルを参照する場合は

は、instaceのために、あなたが名前Sを割り当てる必要があります:テーブルSubjectからすべての行のすべてのフィールド(*)(WHEREの欠如)を取得します

SELECT S.* FROM Subject S 

これは一時的にSと呼ばれます。

あなたはSubjectからのみフィールドEを取得したい場合は、あなたが

SELECT S.E FROM Subject S 

を書くことができこれはこれはFS別名があることを意味

SELECT E FROM Subject 
+0

を持つことができる識別子である

F_EないFEとしてそれに名前を付けます彼は列名としてFEとSEを使用しています。だからこそ彼はそれを使用しようとしている。ドットは、カッコ内にカラム名を入れる場合にのみ許可されます。 'SELECT [F.E]、[S.E] FROM Subject'と同様です。 – MadBoy

+0

@マッドボイ:それはまあまあ可能性があります。OPは私たちに多くの手がかりを与えません:) –

0

を書くとまったく同じです未知の。あなたはこれらの特殊文字を使用したい場合は

select S.E 
    from Subject S 

あなたは、あなたが引用識別子を使用する必要があり、別名にS

EDIT#1

を定義します。

SET QUOTED_IDENTIFIER ON 
GO 

select [F.E] 
     , [S.E] 
    from Subject 

スペース文字を含むフィールド名を使用することもできます。

[Postal Address] 
[Family Name] 
[Is Active?] 
[Subject #] 
[And So Forth!...] 

これはいくつかの簡単な例です。 =)

+0

ひどいものの簡単な例。誰もこのことを知っている方が良いとは思えません:) –

+0

@David:合意しました!私は引用符付きの識別子の使用を嫌います。私はCamelCasing(SQL Server)またはアンダーライン区切り(Oracle)のいずれかの良い古いファッションに固執します。 =) –

0

流れの上にスタックを無駄にするために申し訳ありませんがそれは私が問題だと思う、それは[email protected]#$#$%^%^&&*&() のようなシンボルを持っていないが、それは_

+0

@alex:あなたがコメントする前にコーヒーをつかんでください。私たちはSOでその音色を使わないようにしています。私は彼がフィールドの名前を変更して問題を解決したと言っていたと思います...?この場合、エラーメッセージは、彼がそれを受け取った時点で、それを書いたのとまったく同じでした。 –

+0

すみません。荒い一日だった。 – AlexanderMP