简体   繁体   English

嵌套选择数据库sql查询

[英]nested select database sql query

how to order a values fetched from database?? 如何订购从数据库中获取的值?

SELECT * FROM comment;
------------------------------------
| commentid | content | read_unread|
------------------------------------
1              hello      Unread
2              hi         read    


Select * From replies;
//commentid Fk from table "  comment  " so it means row 1 from table comments has 2 replies
------------------------------------
| repnum | rep_content | commentid |
------------------------------------
1              see ya        1
2              ok            1

i want to show this in a table html/php like this 我想像这样在表格html / php中显示


comment num |  Content | replies count
--------------------------------------------------   
 1              hello    2
 2              hi       0

//the "replies count 2" came from the table replies replied to commentid 1 from table comment //“回复数2”来自表格回复,回复来自表格评论的评论ID 1

how can i show this in a single query sql order by the count of the replies count??? 我如何通过答复计数的计数在单个查询sql顺序中显示此内容???

You can use JOIN on SQL query : 您可以对SQL查询使用JOIN

SELECT c.commentid, c.content, COUNT(r.replies) FROM comment c JOIN replies r ON r.commentid = c.commentID GROUP BY c.commentid, c.content;

More infos here : http://dev.mysql.com/doc/refman/5.7/en/join.html 此处提供更多信息: http : //dev.mysql.com/doc/refman/5.7/en/join.html

Try it. 试试吧。

SELECT a.commentid, a.content, count(*) as replies_count
FROM comment a
LEFT JOIN replies b on a.commentid=b.commentid
GROUP BY a.commentid, a.content

Left join and count from replies table is your buddies. 离开联接并从答复表计数是您的伙伴。 Inner join will remove comments those don't yet get any replies so here left join will be required. 内部联接将删除尚未得到任何replies comments因此此处需要左联接。 And count from replies is your requirement so count(*) will not work. 根据您的要求来计算replies数,因此count(*)将不起作用。

SELECT A.commentid AS comment_num, A.content AS Content, count(B.commentid) as replies_count
FROM comment A
LEFT JOIN replies B on A.commentid=B.commentid
GROUP BY A.commentid, A.content

Try this : 尝试这个 :

SELECT a.commentid, a.content, count(b.repnum) as replies_count 
FROM comment a left join replies b on a.commentid = b.commentid 
GROUP by a.commentid

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM