2013-04-03 62 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