sql - 如何使用sql查询查询每个部分的名称及其线程数?

标签 sql database

我在 mysql 数据库中有 2 个表,第一个包含如下部分:

parts       
primary part_name       part_id
0       web                 1
0       graphic             2
1       php                 3
1       asp                 4
2       photoshop           5
2       illustrator         6
1       html                7

一些部分是初级的,如网页、图形。其他是小节 例如 web 部分包含 (php,asp,html) 部分 所以在主要领域有父亲部分的ID

图形部分包含(photoshop、illustrator)部分。

另一个表是posts;

posts           
post_content    post_title    part_id   post_id
anything          any title      3       1
anything          any title      6       2
anything          any title      3       3
anything          any title      3       4
anything          any title      7       5
anything          any title      6       6
anything          any title      4       7
anything          any title      4       8
anything          any title      3       9

我想得到一个包含主要部分的表(primary = 0) 以及它的帖子总和

结果应该是这样的;

query result        
count_posts   part_name   part_id
7               web          1
2               graphic      2

我试过这个:

SELECT p.*,count(s.post_id)
FROM part p,post s
where s.part_id = 1
and p.belong = 1

但它只得到一部分的结果

最佳答案

除了我自己的帖子,还不能评论其他帖子,所以我提交了一个新的答案。 @StuartLC 答案缺少主要部分和小节之间的连接。

SELECT COUNT(po.post_id) AS count_posts, pa.part_name, pa.part_id
FROM parts pa
  INNER JOIN parts pa2 on pa2.[primary] = pa.part_id
  INNER JOIN posts po on po.part_id = pa2.part_id
WHERE pa.[primary] = 0
GROUP BY pa.part_name, pa.part_id

http://sqlfiddle.com/#!6/1dd90/3/0

关于sql - 如何使用sql查询查询每个部分的名称及其线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26631296/

相关文章:

sql - 用于外键插入的 PostgreSQL 嵌套 INSERTs/WITHs

sql - 简单的SQL查询以选择一个最大值

mysql - 获取 5 个最常见的值/出现的 ID?

mysql - Oracle:获取具有相同日期的最后一条记录

mysql - 在 SQL 命令中使用浮点型值

java - 检查数据库中是否有表

relational-database - 'relational' 中的 'relational database' 对我们意味着什么?

php - 数据库并发问题

database - facebook 对他们的数据库进行了多少非规范化以通过网络分解事物并因此缩小表格并加快系统速度?

PHP - 如果已经存在则跳过