簡體   English   中英

多個MYSQL內部聯接

[英]Multiple MYSQL Inner Joins

嗨,我正在嘗試創建一個搜索功能,但無法讓它工作。

這是我到目前為止:

SELECT DISTINCT users.ID, users.name

FROM users 
INNER JOIN usersSkills 
ON users.ID = usersSkills.userID 
INNER JOIN usersLanguages 

ON users.ID = usersLanguages.userID 
WHERE activated = "1" 
AND type = "GRADUATE" 

AND usersSkills.skillID IN(2) 
GROUP BY usersSkills.userID HAVING COUNT(*) = 1 

AND usersLanguages.languageID IN(2) 
GROUP BY usersLanguages.userID HAVING COUNT(*) = 1 

但我一直收到這個錯誤:

您的SQL語法有錯誤; 查看與您的MySQL服務器版本對應的手冊,以便在第14行的'GROUP BY usersLanguages.userID HAVING COUNT(*)= 1'附近使用正確的語法

如果我刪除其中一個內部聯接和分組bys它的工作原因,不知道它是什么我可以使用兩個分組?

你在聲明中有兩個group by子句; 那是無效的SQL。 做你的第一組,然后是逗號,然后你的第二組。 在使用OR和AND將它們連接到邏輯語句之后,您的Having子句應該出現

GROUP BY usersSkills.userID, usersLanguages.userID
HAVING COUNT(*) = 1 
AND usersLanguages.languageID IN(2) 

這回答你的語法錯誤問題..(不要試着在這里說話)但查詢的結構顯示你真的不知道你想以查詢的形式做什么...我強烈建議你得到一本SQL書或者通過一個sql教程,這樣你就可以理解你想寫的語句實際上是做什么的。

這個:

SELECT DISTINCT users.ID, users.name, COUNT(*)
FROM users 
INNER JOIN usersSkills ON users.ID = usersSkills.userID 
INNER JOIN usersLanguages ON users.ID = usersLanguages.userID 
WHERE activated = "1" 
      AND type = "GRADUATE" AND usersSkills.skillID = 2 
      AND usersLanguages.languageID = 2 
GROUP BY usersSkills.userID,
         usersLanguages.userID 
HAVING COUNT(*) = 1 

刪除了多個錯誤的GROUP BY並合並了查詢。
還將IN(x)更改為= x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM