php - 多对多关系连接三个表,对第三个表的结果进行限制 mysql 中第三个表的限制

标签 php mysql laravel

我有三个处于多对多关系的表。 1.播放列表 2.轨道 3.playlist_tracks

我想检索 10 个播放列表,最多 5 首歌曲。我该怎么做? 我已经尝试过这种方式..

select t1.id as playlistId, t2.playlist_id as pivot_playlist_id, t2.track_id as track_id 
from playlist t1 
join playlist_tracks t2 on t1.id = t2.playlist_id
left join (
    select t3.id as track_id , t3.is_published 
    from tracks t3
    where t3.is_published = 1 
    group by t3.id limit 5
    ) xx on t2.track_id = xx.track_id 
where t1.prior != 0 AND t1.is_published = 1 ;

但没有得到正确的结果,因为它没有对轨道应用限制。它返回特定播放列表的所有歌曲。我做错的地方>请帮助我。这是相同的 DBfiddle sqlfiddle.com/#!9/feddbd/1

最佳答案

尝试将每个 playlist_track 限制为 5 首歌曲:

SET @playlist_id=-1;
SELECT * FROM
(
  SELECT track_id,
@row_number:=CASE
    WHEN @playlist_id= playlist_id THEN @row_number + 1
    ELSE 1
END AS track_number,
@playlist_id:=playlist_id as playlist_id
FROM playlist_tracks
ORDER BY playlist_id
) X WHERE track_number<=5

关于php - 多对多关系连接三个表,对第三个表的结果进行限制 mysql 中第三个表的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53845912/

相关文章:

php - 错误 :Not storing ID in DataBase

mysql - 仅在自增 id 不等于 6 时才插入(例如)?

mysql - 更新多行替换mysql中特定位置的字符

laravel - Homestead 给出 404 Not Found

Laravel 分页不适用于数组而不是集合

php - Laravel 查询生成器

javascript - 带有一次性提交按钮的 Dropzone.js

php - 如何从firebase存储PHP获取图像的下载URL?

php - 无法打印_r domDocument

mysql - 每个人获得最大的结果