티스토리 뷰
두 테이블의 값을 비교해서 원하는 값을 추출해서 사용하는 경우가 많습니다. 특히 DB 에서는 Select ... 로 시작해서 원하는 값을 뽑아 냅니다. 이 방법을 C# 코딩으로 해보기로 했습니다.
고객테이블
id |
name |
1 |
Terry |
2 |
Charlotte |
3 |
Magnus |
4 |
Rui |
간단하 고객 테이블을 생성하였습니다. 고객번호(id)와 이름으로 구성되어 있습니다.
펫테이블 (고객이 맡겨놓은 반려동물)
id |
person_id |
name |
1 |
1 |
Barley |
2 |
1 |
Happy |
3 |
2 |
Boots |
4 |
3 |
Whiskers |
5 |
4 |
Daisy |
고객이 맡겨 놓은 반려 동물입니다. 예를 들기 위한 설정입니다. 펫번호(id), 고객번호(person_id), 펫이름(name) 으로 구성되어 있습니다.
그럼 이 테이블을 읽어 오도록 하겠습니다. 여러가지 방법이 있으나 여기서는 가장 간단하게 코딩으로 집어 넣겠습니다.
List<(int, string)> people = new List<(int, string)>()
{
{ (1, "Terry") },
{ (2, "Charlotte") },
{ (3, "Magnus") },
{ (4, "Rui") },
};
간단히 튜플로 List에 고객정보를 담았습니다.
List<(int, int, string)> pets = new List<(int, int, string)>()
{
{ (1, 1, "Barley") },
{ (2, 1, "Happy") },
{ (3, 2, "Boots") },
{ (4, 3, "Whiskers") },
{ (5, 4, "Daisy") },
};
펫정보도 간단하게 List에 넣어 두었습니다. 예시를 만들때는 튜플이 편하고 좋습니다.
두 정보 중에서 고객 번호로 join을 걸 수 있으므로 그 Linq를 이용하여 해보겠습니다.
var query = from person in people
join pet in pets on person.Item1 equals pet.Item2
select new { OwnerID = person.Item1, OwnerName = person.Item2, PetName = pet.Item3 };
아주 쉽고 간단하게 가져 왔습니다. 위 코드를 보시면 쉽게 이해 할 수 있습니다. 핵심적인 곳은 두번째 줄
join pet in pets on person.Item1 equals pet.Item2
이 부분입니다. 이 부분이 고객테이블의 고객번호와 펫테이블에 고객번호를 일치 시켜 줍니다.
위 query를 출력해보겠습니다.
foreach (var q in query)
{
string output = string.Format("{0, -10} {1, -10} {2, -10}\n", q.OwnerID, q.OwnerName, q.PetName);
Debug.Log( output );
}
========
1 Terry Barley
1 Terry Happy
2 Charlotte Boots
3 Magnus Whiskers
4 Rui Daisy
고객번호와 고객이름 그리고 펫이름으로 출력하였습니다. 1번 고객 Terry 님이 유일하게 펫이 2마리인것을 확인할 수 있습니다.
이렇게 쉽게 원하는 정보를 join으로 가져 올 수 있습니다. 이 방법이 아니면 코딩으로 for문 또는 foreach문을 통해서 원하는 값을 찾아서 넣어주어야 할 것입니다. 쉽고 오히려 더 알기 쉬운 방법으로 개발하세요~