带有连接的SQL Dev查询

时间:2013-11-26 22:17:36

标签: sql oracle join

作为练习,我正在为动物园创建一个数据库。我有一个Animal表,Zoo Location ZLoc和一个移动记录Mrec表。 Zloc表有一个名为region的属性。我想SELECT所有在'北'地区的动物。这是我尝试的,但它不会产生预期的结果:

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 我确保单个'引号'是正确的

5 个答案:

答案 0 :(得分:1)

IN需要IN ('North')中的括号。还要确保使用的是撇号而不是多字节的引号。

答案 1 :(得分:1)

正如错误消息所述,问题在于表结构本身,SQL错误:ORA-00904:“ZLOC”。“REGION”:无效标识符00904. 00000 - “%s:无效标识符”

这意味着列:Zloc->区域不可用。

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.

答案 2 :(得分: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'

答案 3 :(得分: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' 

答案 4 :(得分: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