2016-08-23 212 views
0

我使用的MySQL数据库版本5.6.17
,我有以下各表
SELECT语句JOIN语句在MySQL

  1. 用户
    • ID
    • 用户名
  2. 系列
    • imdbID
  3. 插曲
    • imdbID
    • 赛季
    • 插曲
    • imdbVotes
    • seriesID
  4. marktype
    • ID
    • 类型
  5. 测试又名(serieswatchlist)
    • ID
    • 的userid
    • EPID
    • markid


请注意:不是我删除了大部分的列的每个表中减少的问题长度
我设法提取如下数据(所有用户数据,所有插曲的数据,全系列数据)使用下面的SQL代码

SELECT e.*, u.username, s.* 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1 

,但我想要做的
我想每个系列来获取SQL语句的结果另一个操作是最大的季节号和贝罗最大集数以及使用SQL语句的该系列的该季节。
到目前为止,每次我尝试在前面的代码之前编写任何代码时,它总是会给我一个错误,除语法错误外没有任何解释。
更新1: 尝试GROUP BY围绕我的代码,但它导致错误
“每个派生的表必须有它自己的别名”
这里是修改后的代码

SELECT MAX(e.season) FROM 
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID" 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1) 
GROUP BY seriesID 

更新2: 改变了代码以修复错误以下

SELECT MAX(x.season), max(x.episode) FROM 
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID", e.season, e.episode 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1) as x 
GROUP BY x.seriesID 

它的工作没有任何问题

+0

参与者?什么?这是如何运作的? – Strawberry

+1

最小化问题。例如,有许多不重要的列可以从问题中删除。 – jarlh

+0

@Strawberry仍然在研究那个功能,但它的价值是文本例如(john doe,my x,miss y) – hamada147

回答

1

放置在一个FROM部现有的查询(为子查询),并应用必要GROUP BY和聚合函数

它应该是

select ... 
from (the subuery) <alias_name> 
group by <alias_name>.some_field 

例如别名可能为sub