Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL内部联接查询只返回不同的值_Php_Mysql_Sql - Fatal编程技术网

Php MySQL内部联接查询只返回不同的值

Php MySQL内部联接查询只返回不同的值,php,mysql,sql,Php,Mysql,Sql,以下查询用于分页脚本,该脚本用于从数据库返回新闻帖子。它可以工作,但不会返回任何具有相同日期或标题的项目 我如何重写它以获得标题和/或日期相同的项目 查询: "SELECT p.post_id, p.post_title, p.post_detail, p.post_user, p.post_slug, p.post_date, p.post_type FROM ".TBL_POSTS." as p LEFT JOIN ".TBL_POST_CATEGORIES." as c ON c

以下查询用于分页脚本,该脚本用于从数据库返回新闻帖子。它可以工作,但不会返回任何具有相同日期或标题的项目

我如何重写它以获得标题和/或日期相同的项目

查询:

"SELECT p.post_id, p.post_title, p.post_detail, p.post_user, p.post_slug, p.post_date, p.post_type 
 FROM ".TBL_POSTS." as p 
 LEFT JOIN ".TBL_POST_CATEGORIES." as c
 ON c.post_ID = p.post_id
 WHERE p.post_type = 'post' AND c.category_ID = 5
 GROUP BY p.post_date DESC", 10);
下面是POST表的一个示例

--------------------------------------------
post_id | post_title  | post_date
--------------------------------------------
10      | news post 1 | 2014-02-13 21:09:45
--------------------------------------------
12      | news post 2 | 2014-02-14 21:09:45
--------------------------------------------
下面是CATEGORIES表的示例

--------------------------------------------
id      | post_ID  | category_ID
--------------------------------------------
1       | 10       | 5
--------------------------------------------
2       | 12       | 5
--------------------------------------------

问题是按用法分组

SQL对于每个不同的分组列值只返回一条记录-不是group by子句中的其他列,应该在聚合函数中

不幸的是,MySQL默默地接受了这个错误的查询(这是许多错误的根源),并从分组中选择了一条记录。在这种情况下,由于分组中只有post_日期,因此每个唯一的日期/时间只有一条记录



我怀疑“正确”的行为只是通过删除组(可能用ORDER BY替换),尽管这可能不是目的-使用预期输出更新帖子可能会对如何更新查询提出有用的建议。

确保where子句中的列具有正确的数据,例如,删除where子句,然后尝试执行。@AK47问题在于我应该使用(ORDER BY)的(GROUP BY)。谢谢。@CosmoGroupBy完全不是必需的,您是正确的。但这并不是错误输出的正确原因。即使日期列在group by中,但它将按完整日期(包括hh:mm:sss)分组,以秒为单位的差异记录也将被单独处理,即使日期列在group by中,但它将按完整日期(包括hh:mm:sss)分组,以秒为单位存在差异的记录也将被单独处理。@user2864740如果没有group by,我如何使此查询按降序日期或升序日期排序?@Cosmo只需按字段排序;分组是怎么回事?(没有一些供应商提供的XML这样的分层格式,SQL只能返回表格数据和组,结果仍然是表格输出。)@user2864740感谢您解决了它。我不确定我是否理解你的问题“分组是怎么回事?”。分组是从最早的事件拉到最新的事件,并可以选择从最早的事件拉到最新的事件。我希望我理解你的问题。@Cosmo我的意思是,“为什么结果需要分组?”我很高兴你能够解决你的问题。