使用父级作为过滤器选择线条

时间:2014-05-20 10:17:24

标签: sql

我有一个'Account_move_line'表

'Account_move_line'
ID      Code
1       9601
2       9602
...

“Account_move_line”中的代码可以有父级

'Analytic_account'
ID      Code        Parent
1       5627        NULL
2       9601        5627
3       9601        5627
4       9603        5627
...

我有一个从'Account_move_line'开始的现有查询,我在其中选择'Account_move_line'.code来生成报告。

但现在我想从parent_code开始报告选择,而不是'Account_move_line'。

实施例。从5627报告。我想保留报告的一般结构,该结构从“Account_move_line”

开始

这是做某事的方法吗?:

从'Account_move_line'中选择ID,代码,其中'accounts_move_line'.code in children_from_id(5627)

2 个答案:

答案 0 :(得分:2)

SELECT * FROM 'Account_move_line' where 'Account_move_line'.Code IN ( SELECT 'Analytic_account'.Code from 'Analytic_account' where 'Analytic_account'.Parent = 5627 )

如果我很清楚你需要什么,这应该有效。

E:下面的子查询选择Analytic_account中父代5627的所有代码。

SELECT 'Analytic_account'.Code from 'Analytic_account' where 'Analytic_account'.Parent = 5627

答案 1 :(得分:0)

使用INNER JOIN的替代方法:

SELECT l.* FROM Account_move_line l
INNER JOIN Analytic_account a ON a.Code=l.Code
WHERE a.Parent=5627