2013-11-26 116 views
0

作爲練習,我正在爲動物園創建數據庫。我有一個Animal表,動物園位置ZLoc和移動記錄Mrec表。 Zloc表具有一個稱爲region的屬性。我正在嘗試SELECT「北方」地區的所有動物。以下是我嘗試,但它並沒有產生預期的結果:加入SQL Dev查詢

SELECT 
    nickname, region 
FROM 
    Animal 
    JOIN MRec USING (Animal_ID) 
    JOIN ZLoc USING (ZLoc_ID) 
WHERE region IN ‘North’; 

nickname是動物名稱的屬性。 Mrec充當動物和Zloc之間的關聯。

爲了澄清我使用的Oracle SQL Developer 而且我已經確定了單一的「報價」是正確的

+1

請發佈錯誤 – Sico

+0

對於初學者來說,* North *的引號是錯誤的。使用普通的單引號,例如''North'' – Phil

+1

請勿使用USING。我知道這很酷,但是在更復雜的查詢中變得混亂。 – Strawberry

回答

1

IN要求括號爲IN ('North')。還要確保您使用的是撇號而不是多字節捲曲的引號。

+0

我剛剛嘗試過這一點,但我仍然收到「無效標識符」錯誤。我認爲你對括號是正確的!謝謝! – user3038436

0

我對你的數據/表格設置不是很樂觀,但是爲了選擇北方所有的區域(loc_id)的動物,這應該可以做到。它將選擇所有動物,然後加入移動表(MRec),然後加入到位置表(ZLoc)。您可能需要更新字段的名稱,但這應該將您的目標撤回。

SELECT A.NICKNAME, Z.REGION 
FROM ANIMAL A 
LEFT JOIN MRec M ON M.NICKNAME = A.NICKNAME 
LEFT JOIN ZLoc Z ON Z.LOC_ID = M.LOC_ID 
WHERE Z.LOC_ID = 'North' 
0

試試這個:

SELECT nickname, region 
FROM Animal inner JOIN MRec 
ON animal.animal_ID=MRec.Animal_ID 
ON MRec.zloc_ID = zloc.zloc_ID 
WHERE zloc.region = 'north' 
0

這工作:

SELECT nickname, region 
FROM Animals 
JOIN MRec ON MRec.Animal_ID = Animals.id 
JOIN ZLoc ON MRec.Zloc = ZLoc.id 
WHERE ZLoc.region LIKE 'North' 

Fiddle

1

隨着錯誤消息狀態,這個問題是與表結構本身,SQL錯誤: ORA-00904:「ZLOC」。「REGION」:無效標識符00904. 00000 - 「%s:無效標識符」

暗示列:Zloc-> region不可用。

ORA-00904: invalid identifier 
Cause: The column name entered is either missing or invalid. 
Action: Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, then it must be enclosed in double quotation marks. It may not be a reserved word.