我hava表处理“树”结构
Id Auto - increment int (key column)
LevelType -Int (tell where I get detailt data depend my selection
LevelParentId -Int (if node have parent node)
LevelChildId -Int (if node have child node)
DataId -int (tell what is index for detail data)
然后我有表格,我获取LevelType id列的值。 现在,如果用户添加树节点,他将为节点命名并指定节点类型。现在我想根据LevelType显示来自其他表的数据。示例如果LevelType值为1,则详细数据在表“Comppany中。 如果LevelType值为2,则详细数据位于表“Department”
中我可以使子查询处理LevelType的选择,但我如何指定哪个表获取详细数据...... ??
感谢您的回答。我决定使用Datset instanse
答案 0 :(得分:1)
我猜你正在使树的存储结构变得复杂。请考虑以下方法:
表:节点
秒>更新
尝试以下列方式使用SQL CASE:
CASE
WHEN LevelTypeId = 1 THEN (SELECT FROM Company Table)
WHEN LevelTypeId = 2 THEN (SELECT FROM Department Table)
END
但是,请记住,案例必须为sql选择相同类型的数据。
更新2:
"当关系取决于值"
时,如何在多个表之间建立关系您的意思是如何在Tree表和Company / Department表之间建立外键关系,因为关系取决于LevelType列的值是1/2 ??
实现此目的的一种方法是在您的数据访问层C#代码中处理此关系。否则,以这样的方式重构数据库:只有一个内容表(即公司/部门都将存储在相同的表中)。将公共属性保留为列,而将特定列保留为XML列。序列化Company / Department对象以存储到XML列中。