2013-04-03 64 views
1

我有一个表格,列id (PK),tid (FK),lid(FK)status (Varchar)。对于每个tid有几个lid,每个lidstatus:“完成”或“正在进行”。从数据库中获取状态

我想每个tid,其中tid的状态的状态:如果所有lidtid有状态‘完成’,那么tid状态为‘完成’,如果有的话lid状态是‘正在进行’那么tid状态是“正在进行中”。

这是我迄今所做的:

st2=con.createStatement(); 
String QueryString2 = "SELECT status from lo_status where topic_id='"+topicid+"'"; 
rs2 = st2.executeQuery(QueryString2); 
while (rs2.next()) { 
    status=rs2.getString(1); 
} 

if(status == null){ 
    status="Pending"; 
} 
else if(status.equals("Finished")){ 
    status="Finished"; 
}else{ 
    status="Ongoing"; 
} 

+1

给出一个清晰的表格模板。如果所有这些列都存在于一个表中,那么这太容易了,如果有不同的表,可以提供关于表的一些细节。 –

+0

这些r只在同一张表中。 – Chandrakesh

回答

0

这样做以下。

SELECT count(rowid) total from lo_status where topic_id='"+topicid+"' and status="Finished"; 

如果total = 0,状态就结束了,否则它正在进行。

+0

上面的代码工作正常,我只想知道它完成的tid。 – Chandrakesh

+0

您刚刚将tid传递给查询,为什么不使用它。如果我的解决方案有效,请标记为已接受。 –

+0

我不知道为什么它完成????? – Chandrakesh

0

您可以尝试以下查询。

Select count(status) As total from lo_status where topic_id='"+topicid+"' and status =ongoing"; 
if(total>0){ 
status="OnGoing"; 
}else 
{ 
status="Finished"; 
} 

你可以试试看,如果有任何查询,然后问。

+0

伟大的工作..谢谢.. – Chandrakesh

+0

这里是问题,我想要得到它完成的特定tid .. – Chandrakesh

+0

你想为它完成哪些tid? – chintan