作为练习,我正在为动物园创建一个数据库。我有一个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 我确保单个'引号'是正确的
答案 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'