我在MySQL查询方面遇到了问题(由于我是新手,请轻善待我!)。我的网站上有电视节目,并希望根据两个不同的操作(用于自定义时间表),选择两个日期之间播出的剧集(没有问题)。基本上,如果用户正在关注(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;