如您所见,来自recommendations
表的记录多次显示。但是,如果我删除此行LEFT JOIN cast ON cast.cast_tmdb_id=tmdb_movies.tmdb_id
,则它们不会多次显示。所以这一行是主要问题。
我的SQL查询中没有使用强制转换表,只是为了简单起见。但我需要它。
是的,我需要group_concat
在我的PHP code
我想这就是所需的全部信息。如果您需要更多信息或希望我再次解释,请告诉我。
编辑:亲爱的@Shadow,他将此建议标记为重复。如果我使用DISTINCT
,则不会显示所有记录。因为2部电影可能的平均评分为7.5
答案 0 :(得分:0)
你的问题不是很清楚。那是因为你没有显示出预期的结果。
在您的查询中,您正在选择一列推荐的电影标题,另一列则选择投票。但是,这些并不相关,因为您没有指定订单。因此,第一个推荐的电影可能会举行第五次投票。即使投票按电影排序,仍然难以阅读。
首先从理想的结果开始。然后才写下查询。
示例:强>
预期结果:
movie_title | roles | recommendations ------------------+--------------------------------+------------------------ The Dark Knight | Christian Bale (Bruce Wayne / | The Dark Knight Rises (7.5), | Batman), Michael Caine (Alfred | Batman Begins (7.5), Iron | Pennyworth), ... | Man (7.3), ...
因此我们需要来自演员表的聚合(每部电影的所有角色)和推荐表中的聚合(每部电影的所有推荐)。首先进行聚合,然后加入结果:
library('xts')
XTS1 <- structure(c(12, 7, 7, 22, 24, 30, 26, 23, 27, 30), .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", class = c("xts", "zoo"), .CLASS = structure("double", class = "CLASS"), formattable = structure(list(formatter = "formatC", format = structure(list(format = "f", digits = 2), .Names = c("format", "digits")), preproc = "percent_preproc", postproc = "percent_postproc"), .Names = c("formatter", "format", "preproc", "postproc")), index = structure(c(1413981900, 1413982800, 1413983700, 1413984600, 1413985500, 1413986400, 1413987300, 1413988200, 1413989100, 1413990000), tzone = "", tclass = c("POSIXct", "POSIXt")), .Dim = c(10L, 1L))
#DESIRED OUTPUT
[,1] GetHighest(3)
2014-10-22 08:45:00 12 NA
2014-10-22 09:00:00 7 12
2014-10-22 09:15:00 7 12
2014-10-22 09:30:00 22 12
2014-10-22 09:45:00 24 22
2014-10-22 10:00:00 30 24
2014-10-22 10:15:00 26 30
2014-10-22 10:30:00 23 30
2014-10-22 10:45:00 27 30
2014-10-22 11:00:00 30 27
以下是rextester链接:http://rextester.com/FHA48503