我有这个疑问:SQL查询觉得没有什么,但返回1行的所有空
select problems.problem_id , creator_member_id , problem_title , problem_description , sum(vote) as totalVotes , DAYOFMONTH(problem_date) , DAYNAME(problem_date) , YEAR(problem_date) , MONTH(problem_date) , first_name , last_name , email , small_thumb , mid_thumb
from problems
left join problem_votes
on problems.problem_id = problem_votes.problem_id
left join users
on problems.creator_member_id = users.user_id
left join member_photo
on problems.creator_member_id = member_photo.member_id
where problems.problem_id = 1;
它没有匹配项,并返回此:
-+--------------------+---------------------+------------+-----------+-------+-------------+-----------+
| problem_id | creator_member_id | problem_title | problem_description | totalVotes | DAYOFMONTH(problem_date) | DAYNAME(problem_date) | YEAR(problem_date) | MONTH(problem_date) | first_name | last_name | email | small_thumb | mid_thumb |
+------------+-------------------+---------------+---------------------+------------+--------------------------+-----------------------+--------------------+---------------------+------------+-----------+-------+-------------+-----------+
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------------+-------------------+---------------+---------------------+------------+--------------------------+-----------------------+--------------------+---------------------+------------+-----------+-------+-------------+-----------+
但我不知道为什么它在返回任何东西所有?模式有什么问题吗?或者查询?
我正在检查它是否返回任何内容,并试图返回404页面,但系统认为有1个返回的行,所以它会混淆我的应用程序。
任何我可能在这里做错了?
谢谢!
无法看到它是如何从任何回报你明确强制它只返回其中problems.problem_id = 1的行。 – 2012-01-04 16:36:31
@MarcB我也是 - 非常奇怪,对不对? :) – GeekedOut 2012-01-04 16:44:00
我相信这与使用'sum'这样的聚合函数没有'group by'子句有关。添加'group by'子句可能会修复它,或者您可能还需要将条件更改为'having'而不是'where'。 (或者我可能是完全错误的。) – grossvogel 2012-01-04 16:45:05