Я думаю, что описание ошибки немного вводит в заблуждение, так как я не вижу ничего плохого в том, как заканчивается запрос. Я пытаюсь присоединиться к трем таблицам, и это не работает. Может ли кто-нибудь указать на то, что я делаю неправильно? Кстати, об Oracle.Присоединение к трем таблицам - проблема с псевдонимом и запрос не закончен
SELECT s.PITIMEDATE, ROUND(SYSDATE-s.PITIMEDATE) DIFFDAYS, s.SRC, s.VSA6, a.VSA9, c.COMMENTS, c.Actions, c.MYID
FROM alarm_standing_MAU AS s
INNER JOIN alarm_MAU AS a
ON a.SRC = s.SRC
AND a.VSA9 =
(SELECT VSA9
FROM a
WHERE a.SRC = s.SRC
AND ROWNUM=1)
INNER JOIN Alarm_Standing_Comments AS c
ON c.SRC = s.SRC
AND s.SRC<>'LastCheck'
GROUP BY s.SRC, s.PITIMEDATE, s.VSA6, a.VSA9, c.Comments, c.Actions, c.MYID
ORDER BY s.PITIMEDATE ASC
Для получения дополнительной информации, я пытался добавить второй присоединиться к запросу, но это становилось немного громоздким, поэтому экспериментировал с псевдонимом. Вот начальный запрос - мне было бы интересно узнать, как улучшить читаемость через псевдоним.
SELECT alarm_standing_MAU.PITIMEDATE, ROUND(SYSDATE-alarm_standing_MAU.PITIMEDATE) DIFFDAYS, alarm_standing_MAU.SRC, alarm_standing_MAU.VSA6, alarm_MAU.VSA9
FROM alarm_standing_MAU
INNER JOIN alarm_MAU
ON alarm_MAU.SRC = alarm_standing_MAU.SRC
AND alarm_MAU.VSA9 =
(SELECT VSA9
FROM alarm_MAU
WHERE alarm_MAU.SRC = alarm_standing_MAU.SRC
AND ROWNUM=1)
AND alarm_standing_MAU.SRC<>'LastCheck'
GROUP BY alarm_standing_MAU.SRC, alarm_standing_MAU.PITIMEDATE, alarm_standing_MAU.VSA6, alarm_MAU.VSA9
ORDER BY alarm_standing_MAU.PITIMEDATE ASC
У вас есть 'FROM a ', в то время как в вашей базе данных нет таблицы' a'. Вы не можете использовать подобный псевдоним. –
OK = спасибо. Я немного n00b на этом. Является ли проблема, что псевдоним (alarm_MAU AS a) не получает каскадный переход к подзапросу? – ainwood