简体   繁体   中英

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


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

how can i show this in a single query sql order by the count of the replies count???

You can use JOIN on SQL query :

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

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. And count from replies is your requirement so count(*) will not work.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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