左连接时MYSQL查询失败

时间:2014-02-12 17:30:25

标签: mysql sql

我正在与sql查询进行斗争,我似乎无法弄清楚,并希望有人可以帮助我。

我想要连接在一起的两张桌子。我的第一个表是'achievement'表,它有3个字段:achievementId,AchievementName和ZoneId

我的第二张表是我的用户和这个成就表之间的表,它基本上也存储了3个项目。 UserId,AchievementId和IsChecked。它在这里指的是一个复选框。

所以我正在开发一个以复选框列表的形式显示所有成就的页面,所以我想让已经实现的那些成就显示在列表中,但是,我试图得到的查询失败完全,我不知道如何解决它。我尝试了以下项目,但当然我失败了。所以我希望你们能帮助我并调整我的问题。

我当前的查询是

Select * from Achievement
Where Zone = '2'
LEFT JOIN  Achievement_User
    Where Achievement_User.UserId='2'
    And Achievement_User.AchievementId = Achievement.AchievementId

但它失败了。我可能有错误的语法,但我无法弄明白。如果有人可以帮助我?

编辑我想我解释错了。但左连接仅显示匹配的连接,但是,我需要完成的成就列表,如40行,它现在只显示来自Achievement_User的数据的行和@Aquillo提供的查询。我更喜欢Achivements提供的所有40行和第2区

1 个答案:

答案 0 :(得分:1)

首先你有两个WHERE子句,其次是JOIN是一个JOIN ON。试试这个:

Select * 
from Achievement
LEFT JOIN  Achievement_User ON Achievement_User.AchievementId = Achievement.AchievementId
Where Zone = '2'

更新以响应OP的更新

在这种情况下,您不应对UserID使用限制,请尝试以上查询。