2

mysqli クエリ ループを使用して 2 つのテーブルから選択してカウントする方法。

これがテーブル構造です

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 クエリを使用してこれを行う方法を教えてもらえますか?

4

3 に答える 3

4

これを単一の列に入れたい場合は、次を使用できます。

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 を参照してください

または、サブクエリなしでこれを行うことができます。

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 |
于 2013-03-06T13:11:47.053 に答える
1

これを試して

SELECT 
    c.catname,
    COUNT(*)
FROM categories c
INNER JOIN articles a
    ON c.id = a.catid
GROUP BY 
    c.catname
于 2013-03-06T13:11:09.580 に答える
0

これを試して:

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
于 2013-03-06T13:12:34.430 に答える