2016-10-20 14 views
0

データベースからフェッチされた値を順序付ける方法??ネストされた選択データベースのSQLクエリ

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 

は、私のようなテーブルのHTML/PHPでこれを表示するこの


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

//テーブルの回答から来た "の回答は2カウント" テーブルのコメントから1をcommentidする答え

どのように私はこれを1つのクエリで表示できますか?

答えて

0

これを試してみてください、のRep_or_not COUNTは=「返信」の表示を

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 
+0

Rep_or_Notという名前の返信にテーブルの列があり、私は条件のcount(*)をreplies_countとして作成する= Rep _or_not!= 'Replied' –

+0

Rep_or_Notという名前の返信に表の列があり、私は条件の数(*)をreplies_countとして作成します= Rep_or_not!= 'Replied'は返信のないすべての値を表示します –

+0

私の構文の変更と私はそれを返信して返信を得る=) –

0

あなたは、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; 

詳細に関する情報は:http://dev.mysql.com/doc/refman/5.7/en/join.html

0

それを試してみてください。

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 
+0

私は、すべての行の値を表示したい表の返信にRep_or_notという名前のテーブルの列をHAVAけど...おかげ –

+0

上記のクエリはすべての行の返信回数を表示しますが、Rep_or_not!= '返信'の場合はRep_or_not!= '返信'の件数ですべて表示します.... "count(*)as replies_count" = Rep_or_not!= 'Repied' hehe .. –

0

返信テーブルからの左結合とカウントは、あなたの仲間です。内部結合は、まだrepliesを取得していないcommentsを削除するので、ここでは左結合が必要です。 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 
関連する問題