2012-11-11 56 views
0

我試圖創建跨3桌的JOIN與WHERE條款,但我得到一個錯誤:LEFT JOIN有3個表where子句不正確的語法

'Incorrect syntax near '=' '.

我不知道什麼我有錯嗎?

這是我的發言:

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

WHERE子句

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

在除去=根據文檔:CHARINDEXMSDN Doc

CHARINDEX - 檢索一個表達式爲另一種表達,並且如果找到,則返回其起始位置。

這已經是一個布爾表達式:

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

所以你WHERE條款並不需要=跡象。

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 
1

WHERE =是你的問題。只需將其更改爲WHERE