2011-09-02 15 views
0

내 모든 영역을 선택하고 해당 영역에 대한 거래에 참여하려고합니다.이 쿼리는 내가 기대하는 것과 일치하는 데이터가 있는지 확인한 결과 0 개의 결과를 반환합니다. ... 누가 분명히 틀린 것을 볼 수 있습니까?예상 결과를 반환하지 않는 쿼리

SELECT 
       deal.*, 
       area.id AS area_id 
      FROM area 
      INNER JOIN account_areas ON (
       account_areas.account_id = 1 AND 
       account_areas.area_id = area.id 
      ) 
      JOIN deal ON (
       deal.area_id = area.id AND 
       deal.site_id = 1 AND 
       DAYOFYEAR(deal.created) = DAYOFYEAR(NOW()) AND 
       deal.end >= NOW() 
      ) 
      ORDER BY area.name ASC 

아이디어는 특정 영역에 대한 모든 거래를하고 싶지만 아무런 거래도없는 경우에도 여전히 결과 쿼리에 해당 영역이 있습니다. 거래 WITH

account 
--------------------------------- 
| id |  email  | 
--------------------------------- 
| 1  | test_test.com | 
--------------------------------- 

account_areas 
------------------------ 
| account_id | area_id | 
------------------------ 
|  1  | 81 | 
|  1  | 42 | 
------------------------ 

deal 
-------------------------------------------------------- 
| id | area_id | Title      | 
-------------------------------------------------------- 
| 1  |  81 | Test Title     | 
-------------------------------------------------------- 

예상 결과 : 더 계약이없는 경우 모든 거래 열에 대해 널 (null)을 반환하는 거래

area_id 
+2

관련 테이블의 발췌 부분을 제공해 줄 수 있습니까? 그렇게하면 사용중인 데이터베이스 (또는 그 일부)를 다시 만들고 쿼리 문제 해결을 시작할 수 있습니다. 또한 두 개의 JOIN 중 하나만 사용하여 결과를 얻을 수 있습니까? 마찬가지로 INNER JOIN이 자체적으로 작동합니까? 아니면 "JOIN deal"입니까? –

+0

질문에 * "예상하지 못한 결과"*가 포함되어 있으면 언제나 결과를 기대하는대로 게시해야합니다. 물론 답을 얻는 데 도움이되는 많은 정보가 있어야합니다. – netcoder

답변

0

사용하십시오 ...LEFT JOIN DEAL...없이

id | area_id | title 

예상 결과.

관련 문제