2010-12-09 8 views
2

두 개의 SQL 테이블 인 Customers 및 PhoneNumbers가 있다고 가정합니다.SQL 두 테이블의 데이터 선택 (한 행 -> 여러 행)

Customers에는 customerId (기본 키), fName, lName 열이 있다고 가정합니다.

PhoneNumbers에 phoneNumberId (기본 키), phoneNumber, customerId (외래 키) 열이 있다고 가정합니다. 고객이있을 수 있습니다

SELECT 
    customer.fName, customer.lName, phone.phoneNumber 
FROM 
    Customers customer 
     INNER JOIN phoneNumbers phone ON 
      customer.customerId = phone.customerId 

어떤 경우 : 지금까지 이해 무엇

각 고객이 하나 개의 전화 번호가있는 경우, 나는 다음과 같은 SQL과 각 고객의 FNAME, LNAME, 및 PHONENUMBER을 선택할 수 있다는 것입니다 하나 이상의 전화 번호? 각 고객의 전화 번호 목록이있는 고객 목록을 얻으려면 어떻게합니까?

SQL을 구동 할 수있는 프로그래밍 언어는 C#/.NET입니다.

+0

@casperOne, 코드 작성을위한 감사 : –

+0

http://www.logiclabz.com/sql-server/changes-row-to-columns-transpose-in-sql-server-2005-using-coalesce .aspx –

답변

3

고객 당 정확히 하나의 PhoneNumber가 있으면 쿼리가 작동합니다.

전화 번호가 두 개인 고객도 반환되지만 각 전화 번호마다 고객 레코드가 복제됩니다.

고려해야 할 다른 조건은 전화 번호가없는 고객입니다. 테이블을 INNER JOIN하면 이러한 고객이 결과 집합에서 제외됩니다. 이러한 고객을 포함 시키려면 OUTER JOIN을 사용해야합니다.

0

똑같은 작업을 수행 할 수 있습니다. 현재 나열한 쿼리는 원하는 결과를 정확하게 검색해야합니다. 고객 당 전화 번호 당 행 하나씩.

0

고객 수가 여러 개인 경우 여러 행을 갖게됩니다.

2

주어진 검색어는 여러 전화 번호가있는 경우이를 반환합니다. customer.fNamecustomer.lName이 반복되는 행을 볼 수 있으며 각각은 phone.phoneNumber입니다.

관련 문제