2012-11-15 172 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