Oracle 甲骨文联合订货

Oracle 甲骨文联合订货,oracle,Oracle,我有一个疑问: SELECT p.prenume||' '||p.nume ||' '||LOWER(REVERSE(c.titlu_curs)) AS "Info" from profesori p JOIN didactic d ON d.id_prof = p.id_prof JOIN cursuri c ON d.id_curs = c.id_curs UNION SELECT p.prenume||' '||p.nume||' ' AS "Info" from profesori

我有一个疑问:

SELECT p.prenume||' '||p.nume ||' '||LOWER(REVERSE(c.titlu_curs)) AS "Info"
from profesori p JOIN didactic d ON d.id_prof = p.id_prof 
JOIN cursuri c ON d.id_curs = c.id_curs 
UNION
SELECT p.prenume||' '||p.nume||' ' AS "Info" from profesori p 
JOIN didactic d ON p.id_prof NOT IN 
(SELECT id_prof from didactic)
JOIN cursuri c ON c.id_curs NOT IN (SELECT id_curs from didactic) ORDER BY p.nume
我怎样才能用p.nume点菜?我收到此错误“P”。“NUME”:无效标识符” 我知道我可以用别名“Info”下单,但我怎么能只用p.nume下单呢

我怎样才能用p.nume点菜

对于联合查询,我们只能在第一个子查询的投影中按命名列排序。您的查询只有
nume
作为连接列的一部分,因此出现ORA-00904错误

按结果集中的列对联合查询进行排序意味着您可以按列别名进行排序

order by "Info"
…这意味着它将按
prenume、nume、LOWER(反向(c.titlu_curs))
进行有效排序

另一种解决方案是使用位置表示法,这在不给排序列添加别名时很有用

order by 1

尝试按信息从(您的查询)顺序中选择*。我会得到相同的错误。在查询中也选择p.nume作为“nume”在sql*中执行加上(或任何其他程序)查询并检查Oracle如何命名列,然后按添加顺序。我不能这样做,这是为了一项任务。我只需要选择“p.prenume”| | | | p.nume | | | | | | | | | LOWER’。我也不能选择p.nume。。这就是问题所在。谢谢,外部连接是解决方案。或者,
orderby1
也可以(意思是“按第一列排序”(即“Info”)。不过,这可能不是最好的主意,因为人们会添加列并删除它们,所以“1”“不必与以前的列相同。我建议
按“Info”
订购。”。