2011-09-02 183 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 

這個想法是,我想拉取某個區域的所有交易,但是如果沒有交易,仍然在結果查詢中有該區域。有交易

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     | 
-------------------------------------------------------- 

預期結果:

id | area_id | title 

預期結果沒有一個交易

area_id 
+2

你能否提供所涉及表的摘錄?這樣我們可以重新創建您正在使用的數據庫(或其中的一部分)並開始對查詢進行故障排除。此外,你是否能夠通過兩個JOIN中的一個獲得任何結果?就像INNER JOIN自己的工作一樣嗎?或者「JOIN交易」? –

+0

當你的問題涉及*「不是預期的結果」*時,你應該總是發佈你期望的結果......當然,你必須提供儘可能多的信息來幫助回答它。 – netcoder

回答

0

使用...LEFT JOIN DEAL...將返回空值的所有DEAL列,如果沒有交易。