2015-02-27 6 views
1

Привет У меня есть проблема в линиикак распознать идентификатор внутри скобок

ON S.cid = P.cid 

Я получаю 00904. 00000 - «% s: неверный идентификатор Я не очень понимаю, как решить это.. Я новичок в SQL, поэтому любой вклад в эту конкретную проблему мог бы помочь. Кроме того, это может быть не единственная проблема с этим кодом. Поэтому, если кто-то видит что-то еще странное, пожалуйста, дайте мне немного информации об этом.

SELECT S.cid, NLV(SUM(P.credits#),0) AS mathCred 
FROM Students S 
LEFT JOIN 
(SELECT P.cid , P.credits# 
FROM PassedCourses P 
JOIN HasClass H 
ON P.code = H.code AND H.name = 'mathematical') 
ON S.cid = P.cid 
GROUP BY S.cid; 
+0

У вас также есть «NLV» вместо «NVL». –

ответ

2

Вам нужен псевдоним для подзапроса:

SELECT S.cid, NLV(SUM(ph.credits#),0) AS mathCred 
FROM Students S LEFT JOIN 
    (SELECT P.cid , P.credits# 
     FROM PassedCourses P JOIN 
      HasClass H 
      ON P.code = H.code AND H.name = 'mathematical' 
    ) ph 
    ON S.cid = ph.cid 
GROUP BY S.cid; 

p известен в подзапросе, но не за его пределами. Просто дайте подзапрос псевдонимам и используйте это.

+0

Я сделал это, спасибо, но это еще не конец. Кажется, что теперь я получаю недостающую ошибку выражения в строке 1 – Taiga

+0

@Taga - это будет от опечатки NLV/NVL. –

+0

Спасибо, что был неуклюжим от меня! – Taiga

Смежные вопросы