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