2016-12-12 89 views
0

我有一個表格(系列),我想要獲得一系列的第一集信息以及最後一個可用的季節和情節。 我能夠這樣使用下面的查詢來實現:Mysql查詢第一個元素信息以及最後一個元素的數量

SELECT 
    `video`.*, 
    `cat`.`en_title` categoryName, 
    `cat`.`id` categoryNb, 
    `cat`.`ar_title` category_ar_title, 
    `cat`.`en_title` category_en_title, 
    MAX(`video2`.`season`) LatestSeason, 
    MAX(`video2`.`episodeNumber`) LatestEpisode 
FROM 
    (`video_item` video, 
    `category` cat, 
    `video_item_category` video_cat, 
    `video_item` video2) 
WHERE 
    `video2`.`rootSeries` = `video`.`id` 
    AND `video_cat`.`video_itemId` = video.id 
    AND `video_cat`.`categoryId` = cat.id 
    AND (`video`.published = 1) 
    AND `video`.`rootSeries` = 0 
    AND (video.kind =2) 
    AND (video.seriesRating not in (-1)) 
GROUP BY 
    `video`.`id` 
ORDER BY 
    `video`.`season` asc, `video`.`episodeNumber` asc, `video`.`updateDateTime` desc 
LIMIT 
    15 

我用自連接和最大功能上賽季和情節追加到第一集信息的結果。但數字記錄非常正確,您看到我有一個「發佈」列,並且返回的最大值不會被過濾。

有關如何做到這一點的任何建議?

回答

0

我解決它使用自聯接和子查詢:

SELECT 
    `video`.*, 
    `cat`.`en_title` categoryName, 
    `cat`.`nb` categoryNb, 
    `cat`.`ar_title` category_ar_title, 
    `cat`.`en_title` category_en_title, 
    `video2`.`LatestSeason` , 
    `video2`.`LatestEpisode` 
FROM 
    (`video_item` video, 
    `category` cat, 
    `video_item_category` video_cat) 
join (select 
     rootSeries, 
     MAX(season) LatestSeason, 
     MAX(episodeNummer)LatestEpisode 
    from 
     video_item 
    where 
     published = 1 
    GROUP BY 
     id 
    ) video2 on `video2`.`rootSeries` = `video`.`id` 
WHERE 
    `video_cat`.`video_itemId` = video.id 
    AND `video_cat`.`category_Id` = cat.id 
    AND (`video`.published = 1) 
    AND `video`.`rootSeries` = 0 
    AND (video.kind =2) 
    AND (video.seriesRating not in (-1)) 
GROUP BY 
    `video`.`id` 
ORDER BY 
    `video`.`season` asc, `video`.`episodeNummer` asc,  `video`.`updateDateTime` desc 
LIMIT 
    15 
相關問題