利用MYSQL的UNION ALL多次连接查询解决跨表统计问题

应网友帮忙解决查询发布信息按地区统计问题

原模版写法:

<?php
    $newbook=$empire->query("select  city,count(*)  as num from {$dbtbpre}ecms_weixin where city<>'' group by city order by num desc limit 60");
while($r=$empire->fetch($newbook)) {

$c=$empire->fetch1("select id,name from {$dbtbpre}extend_linkage where id='$r[city]' limit 1");
?>
<li><a><?=str_replace('市','',esub($c['name'],10))?>(<span class="c44b"><?=$r['num']?></span>)</a></li>
<?}?>

image.png一看栏目对应模型才知道需要统计的地区信息都跨表了,于是想想能否提供UNION ALL多次select查询统计,测试后的查询代码写法

<?php
    $newbook=$empire->query("select  a.city,count(*) num from (select id,city from {$dbtbpre}ecms_weixin where city<>'' UNION ALL select id,city from {$dbtbpre}ecms_openid where city<>'' UNION ALL select id,city from {$dbtbpre}ecms_group where city<>'') a group by a.city order by num desc limit 60");
while($r=$empire->fetch($newbook)) {

$c=$empire->fetch1("select id,name from {$dbtbpre}extend_linkage where id='$r[city]' limit 1");
?>
<li><a><?=str_replace('市','',esub($c['name'],10))?>(<span class="c44b"><?=$r['num']?></span>)</a></li>
<?}?>

最终查询展示效果

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论