1

ジャンルを映画にマッピングするテーブルがあります。

GENRE       | MOVIE
--------------------------
Drama       | Boring Movie
Action      | Boring Movie
Comedy      | Boring Movie
Documentary | Epic Movie
Romantic    | Epic Movie
Action      | Epic Movie
Drama       | Epic Movie
Action      | Lost
Drama       | Lost    
---------------------------

同じ映画に最も頻繁に関連付けられている 2 つのジャンルを示す MySQL ステートメントを書きたいと思います。ここでの答えは、3 つの映画すべてでペアになっているため、アクション/ドラマになります。

4

2 に答える 2

1

「同じ映画にリンクされている」という要件を処理するには、自己結合を実行する必要がありますが、まったく同じレコードに対してではありません。

SELECT movie_genre.genre, peer.genre as peer_genre, COUNT(*)
FROM movie_genre
JOIN movie_genre AS peer
  ON movie_genre.MOVIE = peer.MOVIE
  AND movie_genre.GENRE < peer.GENRE
GROUP BY 1,2
ORDER BY 3 DESC ,1
LIMIT 1

より読みやすいソリューション

SELECT movie_genre.genre AS Genre1, peer.genre as Genre2, COUNT(*) As Relations
FROM movie_genre
JOIN movie_genre AS peer
  ON movie_genre.MOVIE = peer.MOVIE
    AND movie_genre.GENRE < peer.GENRE
GROUP BY Genre1, Genre2
ORDER BY Relations desc ,Genre1
LIMIT 1
于 2013-10-02T13:12:49.737 に答える