Php 这个SQL查询有什么问题吗?

Php 这个SQL查询有什么问题吗?,php,mysql,sql,Php,Mysql,Sql,以下是返回零行的查询,实际上不应该: SELECT distinct(usr.user_id) FROM OCN.users AS usr, OCN.users_groups_subscribe AS usr_grp, OCN.tests_users AS test_usr WHERE usr.user_id=usr_grp.subscribe_user_id AND usr.user_id=test_usr.test_user_user_id AND

以下是返回零行的查询,实际上不应该:

SELECT distinct(usr.user_id)
FROM
    OCN.users AS usr,
    OCN.users_groups_subscribe AS usr_grp,
    OCN.tests_users AS test_usr
WHERE
    usr.user_id=usr_grp.subscribe_user_id AND
    usr.user_id=test_usr.test_user_user_id AND
    test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name

唯一可能出现的问题是
test\u user\u test\u id
。我想说它可能是
test\u user.test\u user\u test\u id
基于您的另一列
test\u user.test\u user\u id

尝试:


首先,使用正确的ANSI连接语法:

SELECT distinct usr.user_id
FROM OCN.users AS usr
    inner join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    inner join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name
现在试着一个接一个地注释连接(以及相应的列),看看为什么没有任何行,比如

SELECT distinct usr.user_id
FROM OCN.users AS usr
    --inner join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    inner join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name

这给我带来了魔力:

SELECT distinct usr.user_id 
FROM OCN.users AS usr
    left join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    left join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%pramod%' OR usr.user_last_name LIKE '%pramod%')
ORDER BY usr.user_first_name, usr.user_last_name

您有什么数据?查询看起来是正确的。但是没有表结构和数据。。如何测试?可能是左/右连接导致问题如果您将表结构放入SQL FIDLE中,它将非常有用-您能给出示例数据吗?
SELECT distinct usr.user_id 
FROM OCN.users AS usr
    left join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    left join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%pramod%' OR usr.user_last_name LIKE '%pramod%')
ORDER BY usr.user_first_name, usr.user_last_name