如何从另一个行列表中选择包含部分值的行?

时间:2014-09-03 06:26:17

标签: c# sql firebird

它在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,其他值可以完全不同,其他值只是示例,都可以是随机的)

3 个答案:

答案 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)