左连接3个表where子句不正确的语法

时间:2012-11-11 12:31:49

标签: sql sql-server-2008

我正在尝试使用WHERE子句在3个表中创建JOIN,但是我收到错误:

  

''''附近的语法不正确。

我不知道我错了什么?

这是我的陈述:

select 
    TBL_CS_PROJECT.NAME ,
    TBL_CS_LINKS.LINK_URL , 
    TBL_CS_CLICKS.CLICK_COUNT 
from 
    TBL_CS_PROJECT 
left join 
    TBL_CS_LINKS on TBL_CS_PROJECT.PROJECT_ID = TBL_CS_LINKS.PROJECT_ID 
right join 
    TBL_CS_CLICKS on TBL_CS_LINKS.LINK_ID = TBL_CS_CLICKS.LINK_ID 
WHERE =  (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 
    OR  (CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0) 
order by   
    TBL_CS_PROJECT.NAME

3 个答案:

答案 0 :(得分:3)

删除=子句中的WHERE

...
WHERE (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)  OR ...

根据文件:CHARINDEXMSDN Doc

CHARINDEX - 在表达式中搜索另一个表达式,如果找到则返回其起始位置。

这已经是一个布尔表达式:

(CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 

因此您的WHERE子句不需要=签名。

答案 1 :(得分:1)

您在WHERE子句后面缺少表达式,以将其与(CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)运算符如何工作的表达式=进行比较:

....
WHERE =  (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 
OR  (CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0) order by   TBL_CS_PROJECT.NAME

删除=运算符:

   ...
   WHERE CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0
     OR  CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0
   order by   TBL_CS_PROJECT.NAME

答案 2 :(得分:1)

WHERE =是你的问题。只需将其更改为WHERE

即可