-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

等...

私はdeals_dealsと呼ばれる別のテーブルを持っています。これにはCHAINIDフィールドも含まれています。このテーブルから、VENUEというフィールドを結合して、各CHAIN IDに会場の説明があり、出力が次のようになるようにします。

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

等...

Deals_dealsテーブルとdeals_player_favoriteテーブルの両方にあるキーとしてCHAINidを使用して、会場フィールドをクエリに適切に結合するにはどうすればよいですか。

内部結合を試した結果、結果が多すぎました。

Deals_dealsテーブルには、フィールドCHAINIDとVENUEがあります。

Deals_player_favoriteテーブルにはフィールドCHAINIDとPLAYER_UUIDがありますが、deals_dealsテーブルのすべてのCHAINIDが含まれているわけではなく、player_uuidによってアクセスされたCHAINIDのみが含まれています。

サンプルデータ:

Deals_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 FiddlewithDemoを参照してください

サブクエリは最初にお気に入りの合計を取得し、次にを使用しchainidvenue

于 2013-01-23T20:09:58.140 に答える