加入3个表不会返回正确的结果

时间:2015-05-04 14:15:00

标签: mysql database join

我有三张桌子,他们的结构如下。

keyword表格中,我有唯一关键字。关键字包含多个用户或domain_id,因此我有keyword_user表。

在排名表中,我有一些与关键字相关的数字。

我想返回与我选择的domain_id相关的所有关键字。

我的条件是:

  • 必须:从排名表中返回min(rank_position)
  • 必须:rank.rank_date = keyword.keyword_last_date

问题是:

如果我写keyword_user.domain_id = 1234,它会返回关键字表中的所有行,但排名结果不正确。

如果我写rank.domain_id,它只会返回与keyword_last_date相关的行。

min(rank_position)上使用SELECT导致错误的结果。

我希望关键字表中的所有关键字都在keyword_user.domain_id = XXXrank_date = keyword.keyword_last_date。域必须是我的域名不是别的。

SELECT rank.rank_id
     , keyword_name
     , keyword_last_date
     , MIN(rank_position) my_rank
     , rank_url
     , rank.domain_id 
  FROM keyword
  LEFT 
  JOIN keyword_user 
    ON keyword.keyword_id = keyword_user.keyword_id
  LEFT 
  JOIN rank 
    ON keyword.keyword_id = rank.keyword_id
 WHERE keyword_user.domain_id = 8262 
   AND rank.domain_id = 8262 
   AND rank_date = keyword.keyword_last_date
 GROUP 
    BY keyword.keyword_name
 ORDER 
    BY rakip_rank

enter image description here 从图片中可以看出。 domain_id列有不同的值,但我有domain_id = 8262 。它们与我的预期结果无关。 my_rank列也应该是不同的值,而不仅仅是“1”。

TABLE:关键字 enter image description here

表:排名 enter image description here

TABLE:keyword_user enter image description here

0 个答案:

没有答案