我有三张桌子
td_idea
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
然后 td_idea_comment
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
和 td_idea_like
|-----------|------------|----------
|comm_id | idea_id | user_id |
|-----------|------------|----------|
现在我需要使用一个查询,该查询将根据编号以升序对想法进行排序。在 td_idea_like 和否的投票。对 td_idea_comment 的评论。
三个表的示例如下
td_idea
|------------|-------------|
| idea_id | idea_name |
|------------|-------------|
| 1 | Pink Ruby |
|------------|-------------|
| 2 | Black_ruby |
|------------|-------------|
td_idea_comment
|------------|-------------|---------------|
| comm_id | idea_id | user_id |
|------------|-------------|---------------|
| 1 | 1 | 1 |
|------------|-------------|---------------|
| 2 | 2 | 1 |
|------------|-------------|---------------|
| 3 | 1 | 2 |
|------------|-------------|---------------|
| 4 | 1 | 3 |
|------------|-------------|---------------|
td_idea_like
|------------|-------------|---------------|
| 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 3,结果返回为0。
虽然我希望它像这样排序
idea id 1(since 3+3)
idea id 3(since 0+4)
idea id 2(since 1+2)