具有以下架构
(ER of DataBase) 我正在尝试创建一个查询
将显示标题(
电影
.标题
)以及每部电影的类型(movie_Genres
.movie_genre
) 对于每部电影..在(a)特定时间段内(例如 2-3 天)出现过的内容。我们可以从
Tickets
中获取这些天数.ticket_date
) (b) 由男性顾客 (Customer
.customer_sec
) 和 (c) 这些客户的评分超过 4 (erated_customerRation)。
我可以得到与以下查询一样接近的结果:
SELECT
`movie_title`, `movie_Genres`.`movie_genre`
FROM
`Movies`
INNER JOIN
`movie_Genres` ON `mg_movie` = `movie_ID`
INNER JOIN
`Rated` ON `rated_movie_ID` = `movie_ID`
WHERE `rated_customerRatio` > 4 AND
UNION
(SELECT
`customer_sex`, `rated_customerRatio`
FROM
`Customer`
/* INNER JOIN
`cinema`.`Rated` ON `Rated`.`rated_customer_tabID` = `Customer`.`customer_tabID`
*/
INNER JOIN
`cinema`.`Tickets` ON `Tickets`.`ticket_customer_tabID`=`Customer`.`customer_tabID`
WHERE
`customer_sex` LIKE 'Male'
/* AND rated_customerRatio > 4 */
AND `Tickets`.`ticket_date` > '2016-02-16')
GROUP BY `movie_title`;
此外,我认为我会遇到麻烦,因为一部电影可以有多个类型,而且我不希望同一部电影在我的结果中出现双线。
我们将认真对待任何帮助!
最佳答案
使用WHERE movie.ID IN (Select movie.id...)
查询来获得不寻常的查询关系。即 movie.id 是否可以与门票相关
WHERE MovieID IN
(
SELECT
MovieID
FROM
MovieTable
LEFT JOIN TICKETS ON MovieID = TICKETS.movieID
LEFT JOIN CUSTOMER ON TICKETS.ID = CUSTOMER.ID
WHERE
CUSTOMER.customer_sex LIKE 'Male'
AND Tickets.ticket_date > '2016-02-16')
)
我不知道您的数据库架构,但这应该能让您大致了解一种基于门票移动收视率的排序方式? 1 张票应该有 1 个电影 ID 和 1 个顾客,因此这种关系很容易弄清楚
关于mysql - 合并 2 个 "strange"表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35261792/