2013-01-08 113 views
0

我有一个表包含一些像这样的数据。这是问题/答案脚本的示例。 ID是自动增量,如果PID = 0,那么它是问题,当回答任何问题时,PID被设置为问题的ID。没有答复的主题。Mysql从2行中选择记录

ID PID SUBJECT    CONTENT     DATE 
1  0  First Question   This is my first   09/01/2013 
2  0  Second Question  This is second   09/01/2013 
3  1       Yes this is first   09/01/2013 
4  2       I agree this is second 10/01/2013 
5  0  Third Question   This is third question 11/01/2013 
6  1       Reply to first   11/01/2013 
7  1       Another reply to first 12/01/2013 
8  5       This is reply of 5th  13/01/2013 
9  2       Last try for second  14/01/2013 

我的问题是,

我如何选择与回答的问题算不算?

Ex. 
First Question (3) 
Second Question (2) 
Third Question (1) 

我该如何选择今天回答的问题或答案?

Ex. For 09/01/2013 
First Question (2) ---> 1 question and 1 answer but 2 actions 
Second Question (1) ---> just 1 question 

回答

0

尝试加入的第一个任务

SELECT 
    q.id as ID, 
    q.pid as PID, 
    q.subject as SUBJECT, 
    COUNT(lq.id) as Total 
FROM questions as q 
LEFT JOIN questions as lq ON lq.pid = q.ID 
WHERE q.PID = 0 
GROUP BY q.id 

OUTPUT

ID PID  SUBJECT    TOTAL 
1 0  First Question  3 
2 0  Second Question  2 
5 0  Third Question  1 

Demo

EDITS:
对于第二部分。你应该注意到可以有很多其他的方式来完成同样的任务。

SELECT 
    q.id as ID, 
    q.pid as PID, 
    q.subject as SUBJECT, 
    (COUNT(lq.id) - 1) as Total, 
    q.date 
FROM questions as q 
LEFT JOIN questions as lq ON lq.pid = q.ID OR lq.id = q.PID 
WHERE q.date = DATE(NOW()) 

输出

ID PID  SUBJECT    TOTAL DATE 
1 0  First Question  2  January, 09 2012 00:00:00+0000 
2 0  Second Question  1  January, 09 2012 00:00:00+0000 

Demo

+0

@Seyhan检查编辑和演示!享受 –

+0

谢谢@raheel shan – Seyhan

0

问题1

select PID,count(*) from table 
where pid<>0 
group by PID 

问题2

select PID,count(*) from table 
where pid<>0 and date=current_date() 
group by PID 
+0

这不正是我想要 – Seyhan

1

选择问题,并加入对答案:

select q.id, q.subject, count(a.id) 
from yourtable q 
left join yourtable a on q.id=a.pid 
where q.pid=0 
group by q.id; 
+0

感谢您的回复,所以我怎么能做到这一点对于今天的问题吗? – Seyhan

+0

@Seyhan:添加'和q.date = curdate()'到where子句(假设你的日期列实际上是日期类型) – ysth