Mysql 基于行数的复合查询解决方案
我有三张桌子 td_理念Mysql 基于行数的复合查询解决方案,mysql,Mysql,我有三张桌子 td_理念 |------------|-------------| | idea_id | idea_name | |------------|-------------| |------------|-------------| | idea_id | idea_name | |------------|-------------| | 1 | Pink Ruby | |------------|-------------| | 2
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
| 1 | Pink Ruby |
|------------|-------------|
| 2 | Black_ruby |
|------------|-------------|
然后是你的想法和评论
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
|------------|-------------|---------------|
| comm_id | idea_id | user_id |
|------------|-------------|---------------|
| 1 | 1 | 1 |
|------------|-------------|---------------|
| 2 | 2 | 1 |
|------------|-------------|---------------|
| 3 | 1 | 2 |
|------------|-------------|---------------|
| 4 | 1 | 3 |
|------------|-------------|---------------|
还有你喜欢的想法
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
|------------|-------------|---------------|
| like_id | idea_id | user_id |
|------------|-------------|---------------|
| 1 | 1 | 1 |
|------------|-------------|---------------|
| 2 | 2 | 1 |
|------------|-------------|---------------|
| 3 | 1 | 2 |
|------------|-------------|---------------|
| 4 | 1 | 3 |
|------------|-------------|---------------|
现在我需要使用一个查询,根据td_idea_like中的投票数和td_idea_comment上的评论数,按升序排列想法
三个表的示例如下所示
td_理念
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
| 1 | Pink Ruby |
|------------|-------------|
| 2 | Black_ruby |
|------------|-------------|
td\u想法\u评论
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
|------------|-------------|---------------|
| comm_id | idea_id | user_id |
|------------|-------------|---------------|
| 1 | 1 | 1 |
|------------|-------------|---------------|
| 2 | 2 | 1 |
|------------|-------------|---------------|
| 3 | 1 | 2 |
|------------|-------------|---------------|
| 4 | 1 | 3 |
|------------|-------------|---------------|
你喜欢什么主意
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
|------------|-------------|---------------|
| like_id | idea_id | user_id |
|------------|-------------|---------------|
| 1 | 1 | 1 |
|------------|-------------|---------------|
| 2 | 2 | 1 |
|------------|-------------|---------------|
| 3 | 1 | 2 |
|------------|-------------|---------------|
| 4 | 1 | 3 |
|------------|-------------|---------------|
我使用了这个查询
SELECT * FROM td_idea,td_idea_comment,tyd_idea_like
WHERE td_idea.idea_id=td_idea_comment.idea_id
AND td_idea.idea_id=td_idea_like.idea_id
Order BY (SELECT COUNT(*) AS tot_comment FROM td_idea,td_idea_comment
WHERE td_idea.idea_id=td_idea_comment.idea_id),
(SELECT COUNT(*) AS tot_like FROM td_idea,td_idea_like
WHERE td_idea.idea_id=td_idea_like.idea_id)
但如果在任何情况下,td_idea_comment中没有基于特定想法的行,或者td_idea_like中没有基于特定想法的行,则返回零
说:
- 想法id 1有3个喜欢3个评论
- 想法id 2有1个和2个注释
- 创意id 3有0条评论和4条评论
idea id 1(since 3+3)
idea id 3(since 0+4)
idea id 2(since 1+2)