SQL查询多个连接不起作用

时间:2016-03-25 05:18:19

标签: oracle

我正在使用oracle数据库并尝试运行以下查询,但它给出了错误:

“第17行的错误:ORA-00904:”FRH“。”NS“:标识符无效”

它有什么问题?

以下是查询:

SELECT *
FROM
(SELECT *
FROM ROOMS R
WHERE R.Prix<'50') FRM
JOIN
(SELECT *
FROM
(SELECT *
FROM HOTELS H
WHERE H.CatH=2) FH
JOIN
(SELECT *
FROM RESORTS R
WHERE TypeS='montagne') FR
ON FH.NS=FR.NS) FRH
ON (FRH.NS=FRM.NS AND FRH.NH=FRM.NH);

提前致谢

1 个答案:

答案 0 :(得分:0)

这里有太多嵌套选择。您的查询可以简化为:

osascript <<END
tell application "Finder"
try
    set thePath to get the POSIX path of (folder of the front window as string)
on error
    set thePath to get the POSIX path of (path to desktop folder as string)
end try
end tell
END

我不完全确定哪些表需要仅使用SELECT * FROM rooms rm JOIN hotels ht ON ht.ns = rm.ns AND ht.nh = rm.nh JOIN resorts rs ON rs.ns = ht.ns WHERE rm.prix < 50 AND ht.cath = 2 AND ss.types = 'montagne'; 列加入,哪些需要nsns列,因为您对查询进行了如此多的混淆不向我们展示表格定义。

或者,您可以将连接表上的限制移动到连接条件中。对于您正在使用的内部联接,这不是必需的,但如果您想将其更改为外部联接,则可能需要这样做:

nh

您也不应该比较数字和字符串。假设SELECT * FROM rooms rm JOIN hotels ht ON ht.ns = rm.ns AND ht.nh = rm.nh AND ht.cath = 2 JOIN resorts rs ON rs.ns = ht.ns AND rs.types = 'montagne' WHERE rm.prix < 50; 是数字列,则条件rooms.prix是错误的。您需要将数字与数字R.Prix<'50'

进行比较
相关问题