Ошибка оператора SQL IF - PullRequest
1 голос
/ 22 марта 2011
create view Com as
select C.id,
IF(A.agree = null) THEN
0
else A.agree
end if
+
IF(GA.agree = null) THEN
0
else GA.agree
end if
FROM
comments C left join AGREES A on A.id_comment=C.id left join GAGREES GA on GA.id_comment=C.id

у этого кода есть синтаксическая ошибка, как я могу это исправить?

Ответы [ 4 ]

5 голосов
/ 22 марта 2011

= null ничего не значит. Вы должны использовать is null

3 голосов
/ 22 марта 2011

Попробуйте это:

SELECT C.id,
       IFNULL(A.agree, 0) + IFNULL(GA.agre, 0)
FROM comments C 
    left join AGREES A on A.id_comment=C.id 
    left join GAGREES GA on GA.id_comment=C.id
2 голосов
/ 22 марта 2011

Вы не можете вложить блок if в такой запрос.Если вам нужно реализовать подобную логику, вы должны использовать оператор case.Однако в этом случае вы просто используете coalesce() или isnull() in-line.

select
 c.id
,isnull(a.agree,0) + isnull(ga.agree,0)
from Comments as c
left join Agrees as a
on a.id_comment = c.id 
left join GAgrees ga
on ga.id_comment = c.id

... альтернативно (и то, что вам понадобится для MYSQL):

select
 c.id
,coalesce(a.agree,0) + coalesce(ga.agree,0)
from Comments as c
left join Agrees as a
on a.id_comment = c.id 
left join GAgrees ga
on ga.id_comment = c.id
0 голосов
/ 22 марта 2011

в MySQL используют
ISNULL () или
НУЛЬ или
IFNULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...