-4

我目前有这个查询:

select f.chainid,count(f.player_uuid) as Favorites
from deals_player_favorite f
group by f.chainid
order by 2 desc

结果是:

CHAINID            FAVORITES
25                 2771
2207               2282
3940               1954

ETC...

我有另一个名为 Deals_deals 的表,其中还包括 CHAINID 字段。从这个表中,我想加入一个名为 VENUE 的字段,这样每个 CHAIN ID 都有一个 Venue 描述,输出看起来像这样

CHAINID    VENUE           FAVORITES    
25        Amazon.com        2771
2207       Walmart          2282
3940       CVS              1954

ETC...

我如何正确地将场地字段加入查询中,使用 CHAIN id 作为 Deals_deals 表和 Deals_player_favorite 表中的键。

我尝试了一个内部连接,它导致了太多的结果。

deal_deals 表具有字段 CHAINID 和 VENUE..

Deals_player_favorite 表具有字段 CHAINID 和 PLAYER_UUID,但不包括 deal_deals 表中的所有 CHAINID,仅包含 player_uuid 访问过的 CHAINID。

样本数据:

deal_deals 表

VENUE        CHAINID
Walmart         235
Aeropostale     1467
Checker's       881

Deals_player_favorite 表

PLAYER_UUID         CHAINID
23rjior23-32fjdf     235

请记住,deals_player_favorite 仅包括已点击的特定 CHAINID,而不是所有链 ID....

4

2 回答 2

6
SELECT F.chainid, V.Venue, COUNT(f.player_uuid) as Favorites
FROM deals_player_favorite F
INNER JOIN Venues V
    ON F.chainid = V.chainid
GROUP BY F.chainid, V.Venue
ORDER BY COUNT(f.player_uuid) DESC
于 2013-01-22T20:07:21.853 回答
4

如果您的问题是计数中的记录太多,那么您可能需要考虑使用子查询,然后加入子查询以获得venue

select f.chainid,
  v.venue,
  f.Favorites
from
(
  select chainid, count(player_uuid) Favorites
  from deals_player_favorite
  group by chainid
) f
inner join deals_deals v
  on f.chainid = v.chainid

请参阅带有演示的 SQL Fiddle

子查询将首先获得您的总收藏夹,然后使用chainid您将获得venue

于 2013-01-23T20:09:58.140 回答