热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php–如何组合GROUP_CONCAT和LEFTJOIN?

这是我的餐桌动物:╔══════════╦══════╗║animal║id║╠══════════╬══════╣║do

这是我的餐桌动物:

╔══════════╦══════╗
║ animal ║ id ║
╠══════════╬══════╣
║ dog ║ 1 ║
║ cat ║ 4 ║
║ cat ║ 3 ║
║ bird ║ 1 ║
╚══════════╩══════╝

这是我的表名:

╔═══════╦══════╗
║ id2 ║ name ║
╠═══════╬══════╣
║ 1 ║ alan ║
║ 2 ║ bob ║
║ 3 ║ john ║
║ 4 ║ sam ║
╚═══════╩══════╝

这是我的预期结果:

╔══════════╦═════════════╗
║ dog ║ alan ║
║ cat ║ sam,john ║
║ bird ║ alan ║
╚══════════╩═════════════╝

我试过这个解决方案:

$sql = '
SELECT n.*,
x.grouped_name FROM names n
LEFT JOIN (SELECT a.id,
GROUP_CONCAT(a.animals) AS grouped_name FROM animals a GROUP BY a.id) x
ON x.id = n.id2';
foreach ($pdo->query($sql) as $row) {
echo ''.$row['animal'].' ';
echo ''.$row['grouped_name'].' ';
}

但我没有得到结果.

我也试过这个解决方案:

$sql = ' SELECT n.*, (SELECT GROUP_CONCAT(a.id) FROM animals a WHERE a.id = n.id2) AS grouped_name FROM names n';

但我的结果是这样的:

╔══════════╦═════════════╗
║ ║ 1,1 ║
║ ║ 3 ║
║ ║ 4 ║
╚══════════╩═════════════╝

解决方法:

SELECT t1.animal, GROUP_CONCAT(COALESCE(t2.name, "") separator ',') AS grouped_name
FROM animals t1
LEFT JOIN names t2
ON t1.id = t2.id2
GROUP BY t1.animal

看看小提琴,看动物与名字表中的任何人不匹配时的行为.为了处理这种情况,我在名称上使用COALESCE()在组连接之前用空字符串替换NULL值.

SQLFiddle



推荐阅读
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • C# LiNQ 查询 join连接
    C# LiNQ 查询 join连接 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • SQL查询指定时间段内票数总和并按降序排列
    本文介绍如何使用SQL语句查询特定时间段内的票数总和,并按照票数从高到低进行排序。通过实际案例和详细解释,帮助读者理解SQL查询的实现方法。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文深入探讨了面向切面编程(AOP)的概念及其在Spring框架中的应用。通过详细解释AOP的核心术语和实现机制,帮助读者理解如何利用AOP提高代码的可维护性和开发效率。 ... [详细]
author-avatar
159dzhqian449_734
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有