MySQL クエリに問題があります (私は初心者なので、気楽にやってください!)。私はテレビ番組の Web サイトを持っており、2 つの異なるアクション (カスタム スケジュール用) に基づいて、2 つの日付の間に放映されたエピソードを選択したいと考えています (問題ありません)。基本的に、ユーザーがフォローしている (uses_follow_shows) か、ショーを見ている (user_watched) 場合にエピソードを表示したいので、以下のように (query_on_follow OR query_on_watch) すると思ったのですが、うまくいきません (1200 行を取得しています) 3 ではなく、user_watched から既存のすべての行をフェッチしています)。
このステートメントはそれを行うと思っていましたが、そうではなく、理由がわかりません
SELECT * FROM show_episode_airdate, show_episode, show_network, network, shows, users_follow_shows, user_watched
WHERE show_episode_airdate.airdate BETWEEN '2013-07-20' AND '2013-07-27'
AND ( show_episode.episode_id = show_episode_airdate.episode_id
AND shows.id = show_network.show_id
AND show_network.network_id = network.network_id
AND show_episode.imdb_id_show = shows.imdb_id
AND users_follow_shows.user_id = 2 AND shows.id = users_follow_shows.show_id
OR user_watched.user_id = 2
AND shows.id = user_watched.show_id
AND show_episode.episode_id = show_episode_airdate.episode_id
AND shows.id = show_network.show_id
AND show_network.network_id = network.network_id
AND show_episode.imdb_id_show = shows.imdb_id )
ORDER by network.network_id ASC
誰が何が悪いのか教えてもらえますか?
ありがとう!
編集:
SELECT *
FROM show_episode_airdate join
show_episode
on show_episode.episode_id = show_episode_airdate.episode_id join
shows
on shows.imdb_id = show_episode.imdb_id_show join
show_network
on show_network.show_id = shows.id join
network
on show_network.network_id = network.network_id join
users_follow_shows
on shows.id = users_follow_shows.show_id join
user_watched
on shows.id = user_watched.show_id
WHERE show_episode_airdate.airdate BETWEEN '2013-07-20' AND '2013-07-27' and
(users_follow_shows.user_id = 2 or
user_watched.user_id = 2
)
ORDER by network.network_id ASC;