2011-09-02 199 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列,如果没有交易。