php left join,php – 如何组合GROUP_CONCAT和LEFT JOIN?

这是我的餐桌动物:

╔══════════╦══════╗

║ 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 ║

╚══════════╩═════════════╝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值