2012-11-15 173 views
2

我呼籲跟蹤如下表:SQL - 選擇相關記錄

ID_path -- step_start -- step_end -- time 
    1   A    B  10 
    1   B    C  20 
    1   C    D  30 
    2   A    C  100 
    3   D    C  20 
    3   A    N  300 

我正在尋找在mysql的一個查詢,可以提取路徑AC的累積值,使自身和所有工序中:[AC] + [AB] + [BC]。從跟蹤

SELECT SUM(時間),其中(step_start = 'A' 或step_end = 'C')和ID_path = ID_path

我認爲該查詢考慮步長的值不能既是開始也是結束,但我不知道如何表達最後一個條件(ID_path = ID_path),以便僅提取具有相同id_path的記錄。 是否有特定的SQL函數?

感謝所有幫助/ MySQL的編碼規則/建議

+0

我想你應該參考http://stackoverflow.com/questions/11064913/achieve-hierarchy-in-a-less-number-of-mysql-queries –

+0

@SashiKant這與層次結構有什麼關係? – Barmar

+0

@Barmar:如果你經歷這個問題,需求幾乎相同 –

回答

1

你可以這樣做:

Select ID_path,sum(time) 
from tracking 
where (step_start = 'A' or step_end = 'C') 
group by ID_path 


SQl fiddle demo

+0

謝謝喬,但我需要在示例中的最終值130(交流100次,AB和Bc30次) – Sandra

0

我不完全相信你在做什麼問,但我懷疑是這樣的:

SELECT id_path, sum(time) total 
WHERE step_start = 'A' OR step_end = 'C' 
GROUP BY id_path 
+0

感謝Barmar,但我需要最終的數值,例如130(AC爲100,AB,Bc爲30)。 – Sandra

+0

AB,BD可以有更長的路徑,DE,EF,FC? – Barmar

+0

是的,但在相同的路徑中,開始和結束時只能包含1個步驟,如列車路徑 – Sandra