2014-03-31 4 views
-2

내가 네 아래 테이블 쿼리하기 위해 노력하고있어 :SQL 서버 - 쿼리와 함께 가입하여 여러개의 조건

: 사용자

User | Name 
------------- 
01 | Phil 
------------- 
02 | John 
------------- 
03 | Marc 
------------- 
04 | Rob 

주문 : 정수 및 증분/이름 : VARCHAR

표 2 : 상태

Status | Description 
-------------------- 
    01 | Canceled 
-------------------- 
    02 | Confirmed 
-------------------- 
    03 | Bulding 
-------------------- 
    .. | ..... 
-------------------- 
    15 | Finished 

상태 : 정수 및 증분/설명 : VARCHAR

표 3 : 빌드

Order | Date | Place 
---------------------------- 
    01 | 01/01/2014 | MG 
---------------------------- 
    02 | 02/02/2014 | SP 
---------------------------- 
    05 | 03/03/2014 | BA 

주문 : 정수/날짜 : 날짜/장소 : 대 Varchar

표 4 : 주문

Order | User | Status 
----------------------- 
01 | 02 | 01 
----------------------- 
02 | 01 | 11 
----------------------- 
03 | 03 | 15 
----------------------- 
04 | 01 | 03 
----------------------- 
05 | 04 | 02 

주문 : 정수 및 증분/Us 어 : 정수/상태 : 정수

모든 주문 (상태 1,15 제외)이 표 01, 표 02 및 표 03과 결합하여 표 03에서 날짜순으로 정렬되도록 표 4를 조회해야합니다. 문제점은 표 03 항상 주문 번호가있는 행이있는 것은 아니며이 주문은 검색어에 표시되지 않습니다.

쿼리 결과 :

는 나는이 같은 결과를 필요로하는 도움을

Order | User | Name | Status | Description | Date  | Place 
---------------------------------------------------------------- 
02 | 01 | Phil | 11 | Painting | 02/02/2014 | SP 
---------------------------------------------------------------- 
05 | 04 | Rob | 02 | Confirmed | 03/03/2014 | BA 
---------------------------------------------------------------- 
04 | 01 | Phil | 03 | Bulding |   | 

감사합니다!

+1

이것은 학교 과제와 같습니다. –

답변

0

테이블 3에 "LEFT OUTER JOIN"을 사용하십시오. 다른 테이블의 모든 레코드, 테이블 3의 일치를 리턴하며, 테이블 3이 일치하지 않으면 공백으로 표시됩니다. 예를 들어

:

SELECT * 
FROM Orders 
LEFT OUTER JOIN Build ON Order.Order = Build.Order 

이 주문에 대한 결과 및 빌드에서 경기를 모두 반환합니다. 모든 레코드를 유지하려는 테이블은 ON 문 (ON Order.Order = Build.Order에서)의 왼쪽에 있어야합니다.

더 자세한 정보 : http://technet.microsoft.com/en-us/library/ms187518%28v=SQL.105%29.aspx

+0

안녕 짐, anwser 주셔서 감사합니다,이 내 문제를 해결할 빈 행을 결합하지만, 나머지는 같은 조건 01 또는 15, 다른 테이블과 조인 및 Build.Date에 의해 결과를 주문 ... – Pmoshbr

+0

나는 더 많은 코드와이 쿼리로 결과에 도달 : SELECT Order.Order, Order.User, User.Name, Order.Status, Status.Description, Build.Date, Build.Place FROM 사용자, 상태, 주문 LEFT OUTER JOIN Build ON Order.Order = Build.Order WHERE Order.Status <> 01 AND Order.Status <> 15 AND Order.Client = User.User AND Order.Status = Status.Status 주문 별 Build.Order Desc – Pmoshbr