[英]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.