2009-07-28 100 views
0
SELECT * FROM Questions 
INNER JOIN QuestionKeyword INNER JOIN Keywords 
ON Questions.ID=QuestionKeyword.QuestionID 
AND QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 

它說: 關鍵字'WHERE'附近的語法不正確。這條SQL語句有什麼問題?

回答

6

從多個同你不能合併的條件,但你必須與每個連接單獨列出來:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 
+0

感謝他的工作:) – 2009-07-28 09:22:18

1

你只得到了一個ON子句和兩個內部連接。對於INNER JOIN,使用ON加入條件是強制性的。所以SQL解析器可能會變得困惑,並且意外地看到你的時間。

3

您有兩個JOIN s但只有一個ON。您可能想要

SELECT 
    * 
FROM 
    Questions 
    INNER JOIN QuestionKeyword ON Questions.ID = QuestionKeyword.QuestionID 
    INNER JOIN Keywords ON QuestionKeyword.KeywordID = Keywords.ID 
WHERE 
    Keywords.Keyword LIKE '%es%' 
3

您在第一個INNER JOIN後缺少「ON」。

SELECT * 
FROM Questions 
    INNER JOIN QuestionKeyword 
     ON QuestionKeyword.QuestionID=Questions.ID 
    INNER JOIN Keywords 
     ON QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 
3

對於您正在進行的每個連接,您必須擁有ON子句。這應該可以解決它:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword 
ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords 
ON QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 

編輯:媽的,其他四個答案之前,我可以完成的打字! :P

+0

是的人,堆棧溢出岩石;) – 2009-07-28 09:28:19

2

你的INNER JOIN搞砸了。

像這樣的東西應該工作:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 
2

嘗試重寫它:

SELECT * 
FROM Questions 
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID 
WHERE Keywords.Keyword LIKE '%es%' 

每個INNER JOIN需要相應的關鍵字ON和連接條件。