从两个表中选择和计数
Posted
技术标签:
【中文标题】从两个表中选择和计数【英文标题】: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 【参考方案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
【讨论】:
您的答案已被自动标记为低质量。这可能是因为您没有解释为什么您的解决方案是正确的。以上是关于从两个表中选择和计数的主要内容,如果未能解决你的问题,请参考以下文章