我需要查询1个表以获得与第二个和第三个表中的值相关的总行数

时间:2013-11-08 13:17:56

标签: php mysql select join multiple-select

我有3张桌子:

user_subscriptions

ID  |  SUB_ID  | TYPE |  Type 1 = scripts | Type 2 = packages
 1  |    1     |  1   | 
 2  |    2     |  1   |
 3  |    3     |  1   | 
 4  |    4     |  1   | 
 5  |    1     |  2   |
 6  |    2     |  2   |
 7  |    3     |  2   |
 8  |    4     |  2   | 
 9  |    5     |  1   |
10  |    6     |  2   |
11  |    7     |  1   |
12  |    8     |  1   |
13  |    9     |  2   |

脚本

ID   | AUTHOR_ID |
1    |   58      | 
2    |   58      |
3    |   58      | 
4    |   58      |
5    |   52      |
6    |   53      |
7    |   58      |
8    |   55      | 
9    |   58      |
10   |   56      |

ID   | AUTHOR_ID |
1    |   58      | 
2    |   58      |
3    |   58      | 
4    |   58      |
5    |   56      |
6    |   57      |
7    |   58      |
8    |   58      |
9    |   56      |
10   |   58      |

在'user_subscriptions'表中,'SUB_ID'列对应于脚本ID或包ID,具体取决于为该订阅设置的类型。

我的目标是查询脚本订阅的总数&由特定作者创建的包。作者58创建了6个脚本和7个包(共13个),但只有9个用户订阅与author_id 58相关。

我在编写一个返回与author_id 58有关的user_subscriptions的查询时遇到问题。

非常感谢任何和所有的帮助。我正在使用PHP进行此查询,并且可能会使用mysqli_num_rows来获取我需要的计数。再次感谢!

1 个答案:

答案 0 :(得分:0)

SELECT author_id
     , COUNT(*) total
  FROM
     ( SELECT id, author_id FROM scripts
       UNION ALL
       SELECT id, author_id FROM packages
     ) x
 GROUP
    BY author_id;

请注意,此解决方案中的字数少于上面的webnoobs评论; - )