2012-04-04 6 views
6

イム「の欄が..存在しません」:SQL文のエラー:postgresのコンソールから次のコマンドを試し

select sim.id as idsim, 
     num.id as idnum 
from main_sim sim 
    left join main_number num on (FK_Numbers_id=num.id); 

を、私はこの応答持っている:

 
ERROR: column "fk_numbers_id" does not exist 
LINE 1: ...m from main_sim sim left join main_number num on (FK_Numbers... 

が、私は単純にチェックした場合を私のテーブル:

dbMobile=# \d main_sim 

id    | integer    | not null default 

Iccid   | character varying(19) | not null 

... 

FK_Device_id | integer    | 

FK_Numbers_id | integer    | 

Indexes: 
    "main_sim_pkey" PRIMARY KEY, btree (id) 
    "main_sim_FK_Numbers_id_key" UNIQUE, btree ("FK_Numbers_id") 
    "main_sim_Iccid_key" UNIQUE, btree ("Iccid") 
    "main_sim_FK_Device_id" btree ("FK_Device_id") 
Foreign-key constraints: 
    "FK_Device_id_refs_id_480a73d1" FOREIGN KEY ("FK_Device_id") REFERENCES main_device(id) DEFERRABLE INITIALLY DEFERRED 
    "FK_Numbers_id_refs_id_380cb036" FOREIGN KEY ("FK_Numbers_id") REFERENCES main_number(id) DEFERRABLE INITIALLY DEFERRED 

...とわかるように欄があります。

任意のヘルプwill'beは感謝...

は、おそらくそれは構文エラーだが、私は何を参照することができませんでしだ。 アレッシオ

+0

'FK_Numbers_id'の代わりに' sim.FK_Numbers_id'を試しましたか? –

+3

"FK_Numbers_id"のように引用符でFK_Numbers_idを入力してみてください。アドバイスとして、sqlでmized caseを使用しないでください。 – wildplasser

答えて

14

いいえ、列FK_Numbers_idが存在しない場合、列のみ"FK_Numbers_id"はどうやらあなたは、二重引用符を使用してテーブルを作成し、そのすべての列名は、現在、大文字と小文字が区別され、あなたはすべて二重引用符を使用する必要が

が存在します時間:

select sim.id as idsim, 
     num.id as idnum 
from main_sim sim 
    left join main_number num on ("FK_Numbers_id" = num.id); 

すでにdocumented in the manualであることを復習するには:

fooFOOは同一で、列"foo"および"FOO"は含まれていません。

+0

+1私はこれが真実だと信じていたが、それは狂っていると思ったが、ここでは[ソーシャルデモ](http://sqlfiddle.com/#!1/a33a9/4)だ。 sqlfiddleはおそらく "同じ"名前を2回期待していなかったので、2番目の列に別名を付ける必要がありました。 –

+2

@ConradFix:これはSQL標準がどのように定義されているか(標準ではすべての名前を大文字に変換する必要があるという小さな違いがあります) –

+0

@Branko:はいsim.FK_Numbers_idも同じ結果を試してみました.. – Alessio

関連する問題