2014-09-03 2 views
3

Firebird + C# 응용 프로그램에 있습니다. 나는이 같은 테이블 : 가입다른 행 목록의 값의 일부를 포함하는 행을 선택하는 방법은 무엇입니까?

결과 : 그것과 같을 것이다 그래서 첫 번째 열은 TableB의 첫 번째 열에서 값을 포함하는 경우 TableA의에서 값을 가질 것이다 공동 TableC있을 것입니다 결과에 따라서

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 

루프 - 그것을 할 수있는 가장 좋은 방법은 파이어 버드에서, 어떤 SQL 쿼리 또는 앱에서, C#을 무엇

TableC: 
30RTabc1 someothervalue1 someothervalue2 
30RTabc2 someothervalue3 someothervalue4 
30RTabc1 someothervalue5 someothervalue6 
30RTabc1 someothervalue9 someothervalue10 

: TableA의의, 컬럼 문자열, 컬럼의 TableB의에서 문자열을 포함 TableA의 + TableB의? (키는 column1이며 다른 값은 완전히 다를 수 있습니다. 일부 값은 단지 예일 뿐이며 모든 값은 임의 일 수 있습니다.)

답변

2

를 사용하여 테이블 사이의 관계를 추가 할 수 있습니다, 나는 C#에서 그것을 할 아무런 이유가 없다, 그냥 폐기 많은 데이터를 가져올 것 그 후에.

SELECT t1.* 
FROM TableA t1 
INNER JOIN TableB t2 
ON t1.Key like '%'+t2.Key 
: 그것은 아무것도 할 수 있다면

SELECT t1.* 
FROM TableA t1 
INNER JOIN TableB t2 
ON t1.Key = '30RT'+t2.Key 

:

하지 않으면 : SQL에서 작업을 수행하는 방법에 관해서는

, 그것은 변경하거나 할 수없는 '30RT'부분에 따라 달라집니다

+0

감사합니다. 조인에 같은 문이있을 수 있다는 것을 알지 못했습니다. 조인은 "="만을 기반으로 할 수 있다고 생각했습니다. SQL과 데이터베이스에 익숙하지 않아 다시 한 번 감사드립니다. – user3762355

+0

@ user3762355'WHERE'에서 사용할 수있는 모든 유형의 조건을'ON'에서 사용할 수 있습니다 (항상 그래야만하는 것은 아닙니다) –

2

경험상 전문가를 작업에 위임합니다. 이 경우 : 파이어 버드가 단순한 조인으로 작업하게하십시오. 테이블 조작, 조합, 검색 등에 관해서 전문가이기 때문에합시다.

그러나 어쨌든 테이블이 기억에 있다면, LINQ를 테이블을 결합하십시오.

1

위에서 언급 한 내용 중에서 내가 얻는 것은 키가있는 테이블이 있습니다. 당신이 데이터 집합을 사용하는 경우는 SQL에서 쉽게 할 경우

DataRelation Relation=new DataRelation(DataCoulumn1,DataColumn2) 
DataSet.Relations.Add(Relation) 
관련 문제