辅助表行在一行中

时间:2013-02-13 13:32:19

标签: c# sql sqlite

考虑以下表格:

爸爸表

daddy_id | daddy_name
       1 | daddyA
       2 | daddyB

子表

child_id | child_name | daddy_id
       1 | childA     | 1
       2 | childB     | 1
       3 | childC     | 1
       4 | childD     | 2

出于特殊原因,我需要一些返回结果集的查询:

结果集1

daddy_id | daddy_name | child_id1 | child_id2 | child_id3 |
       1 | daddyA     | childA    | childB    | childC    |

结果集2

daddy_id | daddy_name | child_id1
       2 | daddyB     | childD

我的问题是,我应该继续努力实现这一目标吗?只使用C#和Sqlite可以实现这一点吗?

注意:我正在使用.NET Framework 4.0的通用data reader,但需要一些适用于sqlite3的查询。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下查询:

SELECT daddy_id,
       daddy_name,
       (SELECT group_concat(child_name)
        FROM children
        WHERE children.daddy_id = dads.daddy_id
       ) AS children
FROM dads

会给你一个像这样的结果:

daddy_id | daddy_name | children
       1 | daddyA     | childA,childC,childB
       2 | daddyB     | childD

答案 1 :(得分:0)

我猜测“非凡”的原因是将结果数据绑定到某个UI组件?获取查询以返回可变数量的列确实不是您想要做的事情,我怀疑它甚至是可能的,更不用说可维护了。

在这种情况下,为什么不执行查询并获取具有固定列数的数据读取器,并将数据读取器处理为另一个可用作数据绑定源的集合。