它在firebird + c#应用程序中。 我有这样的表:
TableA:
30RTabc1 someothervalue1 someothervalue2
30RTabc2 someothervalue3 someothervalue4
30RTabc1 someothervalue5 someothervalue6
30RTabc4 someothervalue7 someothervalue8
30RTabc1 someothervalue9 someothervalue10
TableB:
abc1 someothervalue1 someothervalue2
abc2 someothervalue3 someothervalue4
abc3 someothervalue5 someothervalue6
因此,在结果中,我将拥有联合TableC,它将具有TableA中的值,其中第一列包含TableB第一列中的值,因此它看起来像这样:
连接TableA + TableB的结果,其中TableA的column1字符串包含column1的字符串TableB:
TableC:
30RTabc1 someothervalue1 someothervalue2
30RTabc2 someothervalue3 someothervalue4
30RTabc1 someothervalue5 someothervalue6
30RTabc1 someothervalue9 someothervalue10
最好的方法是什么,在firebird中一些sql查询或在app中,c# - loop? (关键是column1,其他值可以完全不同,其他值只是示例,都可以是随机的)
答案 0 :(得分:2)
根据经验:将工作委派给专家。在这种情况下:让Firebird通过简单的JOIN完成工作,因为她在表操作,组合,搜索等方面都是专家。
但是,如果表格仍在memmory中,您可以考虑使用LINQ来加入表格。
答案 1 :(得分:2)
如果在SQL中很容易做到,我认为没有理由在c#中这样做,你必须获取大量数据,然后再丢弃它。
至于如何在SQL中执行它,它取决于' 30RT'部分可以改变或不改变:
如果不是:
SELECT t1.*
FROM TableA t1
INNER JOIN TableB t2
ON t1.Key = '30RT'+t2.Key
如果它可以是任何东西:
SELECT t1.*
FROM TableA t1
INNER JOIN TableB t2
ON t1.Key like '%'+t2.Key
答案 2 :(得分:1)
从上面提到的细节我得到的是,你有一张桌子,上面有加入的钥匙。如果您使用的是DataSet,则可以使用
添加表之间的关系DataRelation Relation=new DataRelation(DataCoulumn1,DataColumn2)
DataSet.Relations.Add(Relation)