2016-08-23 266 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