MySQL - 使用CASE旋转后续行 - 只能获得第一行

时间:2016-05-12 21:21:13

标签: mysql

我正在尝试做什么

我有一个名为剧集的剧集,剧集在另一个名为related_links的表中没有引用多个相关链接。我需要将所有相关链接分别移动到剧集行的剧集表中。因此,一集可能有1个相关链接,而另一集可能有5个相关链接,我需要每集相关每个相关链接的列。其中一集的相关链接的最大数量为24。

希望这是有道理的,但我会尝试绘制它:

剧集表:

id    title
--    -----------
1     ep title 1
2     ep title 2

related_links 表:

object_id    display_text      url
---------    ------------      ----------------
1            text 1            1.com
1            text 2            2.com
1            text 3            3.com
2            text 4            4.com

结果我在剧集表中寻找:

id     title         dtxt1    url1    dtxt2    url2    dtxt3    url3              
--     ----------    -----    -----   -----    ----    -----    ----
1      episode 1     text 1   1.com   text 2   2.com   text 3   3.com 
2      episode 2     text 4   4.com

我尝试过什么

SELECT 
    episodes.id AS episode_id,
    episodes.title AS episode_title,
    CASE
        WHEN related_links.display_text LIKE '%' THEN related_links.display_text
        ELSE 0
    END AS 'dtxt1',
    CASE
        WHEN related_links.url LIKE '%' THEN related_links.url
        ELSE 0
    END AS 'url1'
FROM
    episodes
        INNER JOIN
    related_links ON related_links.object_id = episodes.id

哪个接近并产生结果:

id     title         dtxt1    url1                 
--     ----------    -----    -----   
1      episode 1     text 1   1.com   
2      episode 2     text 4   4.com

但它只会引入一集的第一个相关的display_text和url。我不确定如何为每个后续相关链接手动或动态重复它。

谢谢你看看!

修改 - 我添加了一个SQLfiddle - http://sqlfiddle.com/#!9/0a218f/1

0 个答案:

没有答案