2017-01-05 14 views
3

これは、私が取り組んでいる映画レンタルプラットフォームの基本的な抽出です。あなたを見て、私はこれらの3つのテーブルが必要です。私はSQL qを実行する必要がある、と述べ3つのテーブル間のSQLクエリ

フィルム

Title  | Genre   | 
-------------+---------------+ 
Why Me  | Romantic  | 
The ET  | Fantasy  | 
...   | ...   | 
Planet  | Documentary | 

ユーザー

ID   | Name   | 
-------------+---------------+ 
213   | Jonh D  | 
34267  | Smith E  | 
...   | ...   | 
256   | Sally F  | 

賃料

User_ID  | Film_Title | Date  | 
-------------+---------------+-------------+ 
34267  | The ET  | 2015-11-01 | 
256   | Planet  | 2014-12-03 | 
...   | ...   | ...   | 
256   | Why Me  | 2016-03-04 | 

各ジャンルに最も多くの映画をレンタルしたのUser.Nameに関連付けられています。

ID   | Genre   | 
-------------+---------------+ 
Sally F  | Romantic  | 
Smith E  | Fantasy  | 
...   | ...   | 
Sally F  | Documentary | 

私は私の試みの一部を掲載しているだろうが、正直なところ、私はやっと作りを感知しているものと出てきませんでした。 JOINステートメントを使用すると、ネストされたステートメントでビルドしようとすると簡単になりますが、私は困惑しており、これはとてもイライラしています。

SELECT u.Name, f.Genre 
FROM User AS u JOIN Rent AS r JOIN Film AS f 
GROUP BY f.Genre 
ORDER BY(COUNT(r.User_ID)) 
+0

誰からの最初の質問は、あなたをしたことになります何か試してみる?これまで間違っている可能性があるものを追加してください –

+0

困ったことがあっても私はします@Prdp – fillobotto

+0

私は答えを追加すると、問題を解決するための0回の試みで私はひどく嫌いです。間違って –

答えて

0

あなたはこの1つのようにサブクエリを使用することができます。

SELECT sub.Name, sub.Genre, MAX(rent_number) 
FROM (
    SELECT User.Name, Film.Genre, Count(User.ID) as rent_number 
    FROM Film 
     INNER JOIN Rent ON Film.Title = Rent.Film_Title 
     INNER JOIN User ON Rent.User_ID = User.ID 
    GROUP BY User.Name, Film.Genre) sub 
GROUP BY sub.Genre 
1

これは、ジャンルフィールドがあなたのレンタルテーブルにあると仮定されています

select user_id, genre, max(rentals) from 
(select 
    user_id, 
    genre, 
    count(*) as rentals 
from rent group by user_id, genre) 
group by user_id, genre; 
関連する問題