内部加入MySQL查询无视' WHERE'条款?

时间:2016-07-13 03:38:33

标签: php mysql inner-join

我对一个有点复杂的查询有点麻烦,我无法弄清楚到底出了什么问题...

查询处理两个MySQL表:

$userstable:
|| id || firstname || lastname
|| 1  || John      || Doe

$membershipstable:
|| groupid || templateid || userid ||
||   0     ||     1      ||    1   ||
||   1     ||     0      ||    2   ||
||   0     ||     2      ||    3   ||

以下是查询:

$query = "
    SELECT DISTINCT
        u.id,
        u.firstname,
        u.lastname
    FROM $userstable AS u
    INNER JOIN $membershipstable AS M1 ON u.id = M1.userid
    INNER JOIN $membershipstable AS M2 ON M1.groupid = M2.groupid
    WHERE M2.templateid = :currenttemplateid
    ";

作为参考,我已经仔细检查了占位符:currenttemplateid的变量并且它正确返回...我想要做的是从查询返回当前模板的记录' s { {1}}但是,无论该模板的id是否与{{1}中指定的当前模板相匹配,查询都会返回$userstable中与模板关联的任何用户的用户数据}。clause。

如果我刚刚完全不知道这个,那么我道歉,但我已经使用这段代码几个小时了,所以我的感觉可能不会像它们应该那么尖锐。 。 很感谢任何形式的帮助。

1 个答案:

答案 0 :(得分:1)

修改您的查询如下: -

$query = " SELECT DISTINCT u.id, u.firstname, u.lastname 
           FROM $userstable AS u 
           INNER JOIN $membershipstable AS M1 ON u.id = M1.userid 
           INNER JOIN $membershipstable AS M2 ON M1.groupid = M2.groupid and M2.templateid = :currenttemplateid ";