【问题标题】:Select and count from two tables从两个表中选择和计数
【发布时间】:2013-03-06 13:08:47
【问题描述】:

如何使用 mysqli 查询循环从两个表中选择和计数。

这是表结构

table1 = categories 
id | catname
-------------
1  | cat1
2  | cat2
3  | cat3

等等。

table2 =  articles
id | article | catid
---------------------
1  | art1    | 2
2  | art2    | 2
3  | art3    | 1
4  | art4    | 3

我需要这样显示

cat 1 - 1 articles
cat 2 - 2 articles
cat 3 - 1 articles

谁能指出我如何使用 mysqli 查询来做到这一点?

【问题讨论】:

  • JFYI:您的数据库称为 mysql,而不是 mysqli

标签: mysql


【解决方案1】:

如果您希望在单个列中显示此内容,则可以使用以下内容:

select 
  concat(c.catname, ' - ', a.Total, ' articles') list
from categories c
inner join
(
  select count(*) Total,
    catid
  from articles
  group by catid
) a
  on c.id = a.catid

SQL Fiddle with Demo

或者您可以不使用子查询来执行此操作:

select 
  concat(c.catname, ' - ', count(*), ' articles') list
from categories c
inner join articles a
  on c.id = a.catid
group by c.catname;

SQL Fiddle with Demo。结果是:

|              LIST |
---------------------
| cat1 - 1 articles |
| cat2 - 2 articles |
| cat3 - 1 articles |

【讨论】:

    【解决方案2】:

    试试这个

    SELECT 
        c.catname,
        COUNT(*)
    FROM categories c
    INNER JOIN articles a
        ON c.id = a.catid
    GROUP BY 
        c.catname
    

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT CONCAT(C.catname, ' - ', A.articles, ' Articles')
      FROM   categories C
             INNER JOIN articles A
               ON C.id = A.catid
      GROUP  BY A.catid
      ORDER  BY C.catname
      

      【讨论】:

      • 您的答案已被自动标记为低质量。这可能是因为您没有解释为什么您的解决方案是正确的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多