こえでおしごと! ver3.0.0の実行結果

このSQLをお気に入りに登録

SQLの説明

声優・歌手として活躍されている方々の出演数を年代別にグラフ表示します。
活躍年代で出演内容が多い順に表示します。優先表示を有効にすると、お気に入りクリエータの中で多い順に並び替えた後、それ以外のクリーエータで多い順に並び変えます。

【機能追加】グラフ内の歌手データのクリックからも曲一覧へ飛べるようになりました。

検索結果

?column?
DUMMY

実行したSQL

      SELECT 'DUMMY'
/*
<SQL1> zz.creater
    ,zz.name zz_name
    ,cl.furigana || '<br>'
     || CASE WHEN uc.uid IS NOT NULL THEN '<img src="/~ap2/ero/toukei_kaiseki/heart16-001.gif">' ELSE '' END || '<a href="/~ap2/ero/toukei_kaiseki/creater.php?creater=' || zz.creater || '" target="_blank">' || zz.name || '</a><br>'
     || '声優総出演数 : '  || zz.cnt_seiyu || '<br>'
     || '歌手総出演数 : '  || zz.cnt_kashu || '<br>'
     || CASE WHEN cl.circle IS NULL THEN '' ELSE  'circle : ' || cl.circle || '<br>' END
     || CASE WHEN cl.url IS NULL THEN '' ELSE 'OHP : <a href="' || cl.url || '" target="_blank">' || COALESCE(cl.title,'Offical HP') ||'</a><br>' END
     || CASE WHEN cl.twitter_username IS NULL THEN '' ELSE  'twitter : <a href="https://twitter.com/' || cl.twitter_username || '" target="_blank">' || cl.twitter_username ||'</a><br>' END
     || CASE WHEN cl.blog IS NULL THEN '' ELSE 'BLOG : <a href="' || cl.blog || '" target="_blank">' || COALESCE(cl.blog_title,'ブログ') ||'</a><br>' END
     || CASE WHEN cl.pixiv IS NULL THEN '' ELSE 'pixiv : <a href="https://www.pixiv.net/users/' || cl.pixiv || '" target="_blank">' || cl.pixiv ||'</a><br>' END
     || CASE WHEN cl.cien IS NULL THEN '' ELSE 'cien : <a href="https://ci-en.net/creator/' || cl.cien || '" target="_blank">' || cl.cien ||'</a><br>' END
     || CASE WHEN cl.fantia IS NULL THEN '' ELSE 'fantia : <a href="https://fantia.jp/fanclubs/' || cl.fantia || '" target="_blank">' || cl.fantia ||'</a><br>' END
    名前
    ,zz.cnt_seiyu 総出演数
    ,zz.cnt_sort ソート
    ,zz.cnt_seiyu
    ,zz.cnt_kashu
    ,'<div id="creater-' || zz.creater || '"></div>' graph
    ,zz."声優ALL19xx" || '/' || zz."声優メイン19xx" || '/' || zz."歌手19xx" "19xx"
{SQL_SELECT}
    ,zz."声優ALL未定" || '/' || zz."声優メイン未定" || '/' || zz."歌手未定" "未定"
FROM (
    SELECT
        sh.creater
        ,cl.name
        ,{SQL_SORT_COLUMN} cnt_sort
        ,SUM(CASE WHEN sh.shubetu = 5 THEN 1 ELSE 0 END) cnt_seiyu
        ,SUM(CASE WHEN sh.shubetu = 6 THEN 1 ELSE 0 END) cnt_kashu
        ,SUM(CASE WHEN date_part('year', gl.sellday) < 2000 AND sh.shubetu = 5 THEN 1 ELSE 0 END) "声優ALL19xx"
{SQL_声優ALL}
        ,SUM(CASE WHEN date_part('year', gl.sellday) = 2030 AND sh.shubetu = 5 THEN 1 ELSE 0 END) "声優ALL未定"
        ,SUM(CASE WHEN date_part('year', gl.sellday) < 2000 AND sh.shubetu = 5 AND sh.shubetu_detail = 1 THEN 1 ELSE 0 END) "声優メイン19xx"
{SQL_声優メイン}
        ,SUM(CASE WHEN date_part('year', gl.sellday) = 2030 AND sh.shubetu = 5 AND sh.shubetu_detail = 1 THEN 1 ELSE 0 END) "声優メイン未定"
        ,SUM(CASE WHEN date_part('year', gl.sellday) < 2000 AND sh.shubetu = 6 THEN 1 ELSE 0 END) "歌手19xx"
{SQL_歌手}
        ,SUM(CASE WHEN date_part('year', gl.sellday) = 2030 AND sh.shubetu = 6 THEN 1 ELSE 0 END) "歌手未定"
    FROM
        shokushu sh
        INNER JOIN gamelist gl ON sh.game = gl.id
        INNER JOIN createrlist cl ON sh.creater = cl.id AND (sh.shubetu = 5 OR sh.shubetu = 6)
    WHERE
        cl.name ILIKE '%{SQL_CREATOR_NAME}%'
    GROUP BY
        sh.creater
        ,cl.name
    ) zz 
    INNER JOIN createrlist cl ON zz.creater = cl.id 
    LEFT OUTER JOIN usercreater uc ON zz.creater = uc.creater AND uc.uid = '{SQL_USER_ID}'
ORDER BY
    CASE WHEN uc.uid IS NOT NULL THEN {SQL_SORT_FAVORITE} ELSE 0 END DESC
    ,cnt_sort DESC
    ,{SQL_SORT_COLUMN2} DESC
LIMIT {SQL_LIMIT}
</SQL1>
<SQL2>
--    fo.rank
--    ,fo.brandname_id
--    ,fo.game_id
--    ,fo.sellday
    fo.画像
    ,fo.brand_link || ' ' || fo.brandname_a 
     || '<br>' || fo.game_link || ' '  ||  fo.セール中 || fo.play_status || fo.gamename_a 
     || '<br>' || fo.sellday
     || '<br>中央値/データ数 : ' || CASE WHEN fo.count2 > 0 THEN fo.median || '/' || fo.count2 ELSE 'NODATA' END
     ゲームタイトル
    ,STRING_AGG(COALESCE(fo.img, '')
     || '<div class="' || CASE fo.shubetu_detail WHEN '1' THEN 'seiyu_main ' WHEN '2' THEN 'seiyu_sub ' WHEN '3' THEN 'seiyu_other ' ELSE '' END || '">' || fo.shubetu_detail_name || CASE WHEN fo.char_furigana IS NULL THEN '' ELSE  '(' || fo.char_furigana || ')' END
     || CASE WHEN fo.一致 = '一致' OR fo.一致 = '無し' THEN '' ELSE '<br>' || fo.アイコンゲーム名 || '(候補表示)' END
--     || '<hr>【' || fo.prev_char || '】<br>【' || fo.curr_char || '】'
--     || '<hr>【' || fo.prev_char2 || '】<br>【' || fo.curr_char2 || '】'
     || '</div>'
     ,'<hr class="char_br">' 
       ORDER BY
           CASE WHEN fo.io_game = fo.gl_id THEN 1 ELSE 0 END DESC
           ,CASE WHEN fo.char_furigana IS NOT NULL THEN fo.アイコンゲーム発売日 ELSE '1900-01-01' END DESC, fo.char_furigana
     ) キャラクター
FROM (
    SELECT
        RANK() OVER (PARTITION BY gl.id, COALESCE(io.game, 0), io.name ORDER BY CASE WHEN io.game = gl.id THEN 1 ELSE 0 END DESC) rank
        ,CASE 
             WHEN bl.kind = 'CIRCLE' THEN '<img src="' || foo.doujin_image || '" width="125px">' 
             ELSE '<img src="' || foo.mediumimage || '" width="125px">' 
         END 画像
        ,gl.brandname brandname_id
        ,sh.game game_id
        ,'<a href="./usersql_exec.php?sql_id={sql_id}&pov_top5=true&direct=true&scenario_kind=scenario_all&illust_kind=illust_all&music_kind=music_all&brand_id=' || gl.brandname || '&user_id={user_id}" target="_blank">★</a>' brand_link
        ,'<a href="./usersql_exec.php?sql_id={sql_id}&pov_top5=true&direct=true&scenario_kind=scenario_all&illust_kind=illust_all&music_kind=music_all&game_id=' || gl.id || '&user_id={user_id}" target="_blank">★</a> ' game_link
        ,'<a href="game.php?game=' || gl.id || '" target="_blank">' || gl.gamename || '</a>'
         || CASE WHEN gl.model = 'PC' THEN CASE WHEN gl.erogame = true THEN '' ELSE '(非18禁)' END ELSE '(' || gl.model || CASE WHEN gl.erogame = true THEN '' ELSE '/非18禁' END || ')' END gamename_a
        ,'<a href="brand.php?brand=' || bl.id || '" target="_blank">' || bl.brandname || '</a>' || CASE WHEN bl.kind = 'CIRCLE' THEN '<span class="brand_circle">(同人)</span>' ELSE '<span class="brand_corp"></span>' END brandname_a
        ,gl.sellday
        ,sh.shubetu_detail
        ,sh.shubetu_detail_name character_name
        ,'<img src="{image_url}' || io.image_dir || '" class="chara_img">' img
        ,COALESCE('<a href="./character.php?character=' || io.a_character || '" target="_blank">' || sh.shubetu_detail_name || '</a>', sh.shubetu_detail_name) shubetu_detail_name
        ,io.char_furigana
        ,COALESCE('<a href="game.php?game=' || io.game || '" target="_blank">' || io.gamename || '</a>', gl.gamename) アイコンゲーム名
        ,CASE WHEN io.image_dir IS NOT NULL AND gl.id = io.game THEN '一致' WHEN io.image_dir IS NOT NULL AND gl.id != io.game THEN '不一致' ELSE '無し' END 一致
        ,lag(gl.id || '/' || COALESCE(io.game, 0) || '/' || sh.shubetu_detail_name, 1, '') OVER (ORDER BY sh.shubetu_detail_name, COALESCE(io.sellday, '1900-01-01') DESC, gl.id) prev_char
        ,lag(gl.id || '/' || sh.shubetu_detail_name,                                                  1, '') OVER (ORDER BY sh.shubetu_detail_name, COALESCE(io.sellday, '1900-01-01') DESC, gl.id) prev_char2
        ,gl.id || '/' || COALESCE(io.game, 0) || '/' || sh.shubetu_detail_name curr_char
        ,gl.id || '/' || sh.shubetu_detail_name                                curr_char2
        ,gl.furigana
        ,io.sellday アイコンゲーム発売日
        ,io.game io_game
        ,gl.id gl_id
        ,COALESCE(gl.median, 0) median
        ,COALESCE(gl.count2, 0) count2
        ,CASE
             WHEN uv.play= 't' THEN '<img class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/sub_black_accept.png">'
             WHEN uv.possession = 't' THEN '<img class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/archive.png">'
             WHEN uv.before_purchase_will != '' THEN '<img  class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/shopping_cart.png">'
             ELSE ''
         END play_status
        ,COALESCE(セール中, '') セール中
    FROM
        (SELECT id, game, creater, shubetu, checked, note, shubetu_detail,  unnest(string_to_array(CASE  WHEN shubetu_detail = 3 THEN COALESCE(shubetu_detail_name, 'その他') ELSE shubetu_detail_name END,'、')) shubetu_detail_name FROM (SELECT * FROM shokushu WHERE shubetu = 5) a) sh
        INNER JOIN gamelist gl ON sh.game = gl.id 
        INNER JOIN brandlist bl ON gl.brandname = bl.id 
        LEFT OUTER JOIN (SELECT gl.id
               , COALESCE(
{amazon_img_line}                  (/*Amazon*/SELECT replace(al.mediumimage, '_SL160_', '_SL200_') FROM amazon_game AS ag, amazonlist AS al WHERE ag.asin = al.asin AND ag.game = gl.id AND al.mediumimage IS NOT NULL ORDER BY al.asin LIMIT 1),
                  (/*DMM*/'https://pics.dmm.co.jp/'||gl.dmm_genre||'/pcgame/'||gl.dmm||'/'||gl.dmm||'p'||CASE WHEN gl.dmm_genre_2 = 'doujin' THEN 't' ELSE 's' END||'.jpg')
                 , (/*DLsite*/'https://img.dlsite.jp/modpub/images2/work/'||CASE WHEN gl.dlsite_domain = 'pro' THEN 'professional' WHEN gl.dlsite_domain = 'pro2' OR left(gl.dlsite_id, 2) = 'VJ' THEN 'professional' ELSE 'doujin' END||'/'||left(gl.dlsite_id, 2)||right('000000'||(ceil(right(gl.dlsite_id, 6)::real / 1000) * 1000)::text, 6)||'/'||gl.dlsite_id||'_img_sam.jpg')
                 , (/*DiGiket*/'https://img.digiket.net/cg/' || to_number(substring(gl.digiket, 4,3),'999') || '/'||gl.digiket||'_2.jpg')
                 , (/*Gyutto*/'https://gyutto.com/data/item_img/'||left(gl.gyutto_id, -2)||'/'||gl.gyutto_id||'/'||gl.gyutto_id||'_p_m2.jpg')
                 , (/*Getchu*/'https://image.getchu.com/afimage/'||floor(gl.comike::real / 1000)::text||'000/'||gl.comike||'/afimg_'||gl.comike||'_120.jpg')
                 , '') AS mediumimage
               , COALESCE(
                  (/*DLsite*/'https://img.dlsite.jp/modpub/images2/work/'||CASE WHEN gl.dlsite_domain = 'pro' THEN 'professional' WHEN gl.dlsite_domain = 'pro2' OR left(gl.dlsite_id, 2) = 'VJ' THEN 'professional' ELSE 'doujin' END||'/'||left(gl.dlsite_id, 2)||right('000000'||(ceil(right(gl.dlsite_id, 6)::real / 1000) * 1000)::text, 6)||'/'||gl.dlsite_id||'_img_sam.jpg')
                 , (/*DMM*/'https://pics.dmm.co.jp/'||gl.dmm_genre||'/pcgame/'||gl.dmm||'/'||gl.dmm||'p'||CASE WHEN gl.dmm_genre_2 = 'doujin' THEN 't' ELSE 's' END||'.jpg')
                 , (/*DiGiket*/'https://img.digiket.net/cg/' || to_number(substring(gl.digiket, 4,3),'999') || '/'||gl.digiket||'_2.jpg')
                 , (/*Gyutto*/'https://gyutto.com/data/item_img/'||left(gl.gyutto_id, -2)||'/'||gl.gyutto_id||'/'||gl.gyutto_id||'_p_m2.jpg')
                 , (/*Getchu*/'https://image.getchu.com/afimage/'||floor(gl.comike::real / 1000)::text||'000/'||gl.comike||'/afimg_'||gl.comike||'_120.jpg')
                 , '') AS doujin_image
            FROM gamelist AS gl
         ) AS foo ON foo.id = gl.id
        LEFT OUTER JOIN userreview uv ON uv.game= gl.id AND uv.uid = '{user_id}'
----------------- 最終セール時価格
        LEFT OUTER JOIN (
            SELECT sale.game, sale.e
               ,CASE WHEN sale.e < CURRENT_TIMESTAMP THEN '<span class="not_sale_now">最終セール時: ' || sale.c || ' ' || TO_CHAR(sale.e, 'YYYY-MM-DD') || '</span>' ELSE '<span class="now_on_sale"><img src="./sale.png" class="sale_icon" title="' || sale.name || '" alt="' || sale.name || '"> ' || sale.c || '<span class="text-nowrap">~' || TO_CHAR(sale.e, 'MM-DD HH24:MI') || '</span></span>' END セール時最終
               ,CASE WHEN sale.e < CURRENT_TIMESTAMP THEN '' ELSE '<img src="./sale.png" class="sale_icon" title="' || sale.name || '" alt="' || sale.name || '">' END セール中
               ,sale.rownum 
            FROM (
                SELECT sl.name, game,end_timestamp as e, cg.content as c, ROW_NUMBER() OVER (PARTITION BY game ORDER BY end_timestamp DESC, cl.id DESC) rownum
                FROM campaignlist cl INNER JOIN campaign_game cg ON cg.campaign=cl.id INNER JOIN storelist sl ON cl.store = sl.id ) sale
            WHERE sale.rownum=1) ls ON ls.game = gl.id
----------------- 
        LEFT OUTER JOIN  (
            SELECT
                bl.id brand_id
                ,gl.id game
                ,gl.gamename gamename
                ,gl.sellday sellday
                ,COALESCE(io.character, ig.character, ie.character) a_character
                ,COALESCE(io.stage, ig.stage, ie.stage) stage
                ,COALESCE(io.image_dir, ig.image_dir, ie.image_dir) image_dir
                ,ch.name
                ,ch.furigana char_furigana
            FROM
                appearance_image_official io
                FULL OUTER JOIN appearance_image_gyutto ig ON io.game = ig.game AND io.character = ig.character
                FULL OUTER JOIN appearance_image_getchu ie ON io.game = ie.game AND io.character = ie.character
                INNER JOIN characterlist ch ON ch.id = COALESCE(io.character, ig.character, ie.character)
                INNER JOIN gamelist gl ON gl.id = COALESCE(io.game, ig.game, ie.game)
                INNER JOIN brandlist bl ON bl.id = gl.brandname
          ) io ON  (io.name = sh.shubetu_detail_name AND io.game  =sh.game) -- OR (io.name = sh.shubetu_detail_name AND io.brand_id = gl.brandname AND io.game  != sh.game)  
                        -- 該当ゲーム内にキャラ画像がなければ同一ブランド内から同一キャラ名でキャラ画像を再検索するゲームとキャラ名が一致している場合は優先的に利用する(RANK関数で処理)(とりあえず実装中断)
    WHERE
        sh.shubetu = 5
{shubetu_detail_line}        AND sh.shubetu_detail = 1
{year_line}        AND gl.sellday BETWEEN '{year_from}-01-01' AND '{year_to}-12-31'
        AND sh.creater = {creator_id}
    ) fo
WHERE
    fo.rank = 1 
--    AND fo.prev_char != fo.curr_char
GROUP BY
    fo.rank
    ,fo.画像
    ,fo.brand_link
    ,fo.brandname_id
    ,fo.brandname_a
    ,fo.game_link
    ,fo.game_id
    ,fo.gamename_a
    ,fo.sellday
    ,fo.median
    ,fo.count2
    ,fo.play_status
    ,fo.セール中
ORDER BY
    fo.sellday DESC
    ,fo.game_id
</SQL2>
<SQL3>
    gl.gamename
    ,md.musicname 曲名
FROM
    (SELECT
        gl.id gl_id
        ,STRING_AGG(gm.category || '(' || ml.name || ')', '<br>' ORDER BY gm.category) musicname
    FROM
        game_music gm LEFT OUTER JOIN musiclist ml ON gm.music = ml.id 
        LEFT OUTER JOIN gamelist gl ON gm.game = gl.id
        LEFT OUTER JOIN singer si ON ml.id = si.music
        LEFT OUTER JOIN createrlist cl ON si.creater = cl.id
    WHERE
        cl.id = {SQL_CREATOR_ID}
{SQL_YEAR_LINE}        AND gl.sellday BETWEEN '{SQL_YEAR_FROM}-01-01' AND '{SQL_YEAR_TO}-12-31'
    GROUP BY
        gl.id
    ) md LEFT OUTER JOIN gamelist gl ON md.gl_id = gl.id

</SQL3>
<SQL4>
    CASE 
         WHEN bl.kind = 'CIRCLE' THEN '<img src="' || foo.doujin_image || '" width="125px">' 
         ELSE '<img src="' || foo.mediumimage || '" width="125px">' 
     END 画像
/*
    ,fo.brand_link || ' ' || fo.brandname_a 
     || '<br>' || fo.game_link || ' '  ||  fo.セール中 || fo.play_status || fo.gamename_a 
     || '<br>' || fo.sellday
     || '<br>中央値/データ数 : ' || CASE WHEN fo.count2 > 0 THEN fo.median || '/' || fo.count2 ELSE 'NODATE' END
     ゲームタイトル
*/
    ,'<a href="./usersql_exec.php?sql_id={sql_id}&pov_top5=true&direct=true&scenario_kind=scenario_all&illust_kind=illust_all&music_kind=music_all&brand_id=' || gl.brandname || '&user_id={user_id}" target="_blank">★</a> ' 
     || '<a href="brand.php?brand=' || bl.id || '" target="_blank">' || bl.brandname || '</a>' || CASE WHEN bl.kind = 'CIRCLE' THEN '<span class="brand_circle">(同人)</span>' ELSE '<span class="brand_corp"></span>' END
     || '<br><a href="./usersql_exec.php?sql_id={sql_id}&pov_top5=true&direct=true&scenario_kind=scenario_all&illust_kind=illust_all&music_kind=music_all&game_id=' || gl.id || '&user_id={user_id}" target="_blank">★</a> ' 
     || COALESCE(セール中, '') 
     || CASE
            WHEN uv.play= 't' THEN '<img class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/sub_black_accept.png">'
            WHEN uv.possession = 't' THEN '<img class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/archive.png">'
            WHEN uv.before_purchase_will != '' THEN '<img  class="user_game_status" src="/~ap2/ero/toukei_kaiseki/img/primo_icons/48x48/shopping_cart.png">'
            ELSE ''
        END
     || '<a href="game.php?game=' || gl.id || '" target="_blank">' || gl.gamename || '</a>'
     || CASE WHEN gl.model = 'PC' THEN CASE WHEN gl.erogame = true THEN '' ELSE '(非18禁)' END ELSE '(' || gl.model || CASE WHEN gl.erogame = true THEN '' ELSE '/非18禁' END || ')' END
     || '<br>' || gl.sellday
     || '<br>中央値/データ数 : ' || CASE WHEN gl.count2 > 0 THEN COALESCE(gl.median, 0) || '/' || gl.count2 ELSE 'NODATA' END ゲームタイトル
    ,REPLACE(sh.shubetu_detail_name, '、', '<br>') 曲名
FROM
    shokushu sh
    LEFT OUTER JOIN gamelist gl ON sh.game = gl.id
    INNER JOIN brandlist bl ON gl.brandname = bl.id
    LEFT OUTER JOIN (SELECT gl.id
           , COALESCE(
{amazon_img_line}                  (/*Amazon*/SELECT replace(al.mediumimage, '_SL160_', '_SL200_') FROM amazon_game AS ag, amazonlist AS al WHERE ag.asin = al.asin AND ag.game = gl.id AND al.mediumimage IS NOT NULL ORDER BY al.asin LIMIT 1),
              (/*DMM*/'https://pics.dmm.co.jp/'||gl.dmm_genre||'/pcgame/'||gl.dmm||'/'||gl.dmm||'p'||CASE WHEN gl.dmm_genre_2 = 'doujin' THEN 't' ELSE 's' END||'.jpg')
             , (/*DLsite*/'https://img.dlsite.jp/modpub/images2/work/'||CASE WHEN gl.dlsite_domain = 'pro' THEN 'professional' WHEN gl.dlsite_domain = 'pro2' OR left(gl.dlsite_id, 2) = 'VJ' THEN 'professional' ELSE 'doujin' END||'/'||left(gl.dlsite_id, 2)||right('000000'||(ceil(right(gl.dlsite_id, 6)::real / 1000) * 1000)::text, 6)||'/'||gl.dlsite_id||'_img_sam.jpg')
             , (/*DiGiket*/'https://img.digiket.net/cg/' || to_number(substring(gl.digiket, 4,3),'999') || '/'||gl.digiket||'_2.jpg')
             , (/*Gyutto*/'https://gyutto.com/data/item_img/'||left(gl.gyutto_id, -2)||'/'||gl.gyutto_id||'/'||gl.gyutto_id||'_p_m2.jpg')
             , (/*Getchu*/'https://image.getchu.com/afimage/'||floor(gl.comike::real / 1000)::text||'000/'||gl.comike||'/afimg_'||gl.comike||'_120.jpg')
             , '') AS mediumimage
           , COALESCE(
              (/*DLsite*/'https://img.dlsite.jp/modpub/images2/work/'||CASE WHEN gl.dlsite_domain = 'pro' THEN 'professional' WHEN gl.dlsite_domain = 'pro2' OR left(gl.dlsite_id, 2) = 'VJ' THEN 'professional' ELSE 'doujin' END||'/'||left(gl.dlsite_id, 2)||right('000000'||(ceil(right(gl.dlsite_id, 6)::real / 1000) * 1000)::text, 6)||'/'||gl.dlsite_id||'_img_sam.jpg')
             , (/*DMM*/'https://pics.dmm.co.jp/'||gl.dmm_genre||'/pcgame/'||gl.dmm||'/'||gl.dmm||'p'||CASE WHEN gl.dmm_genre_2 = 'doujin' THEN 't' ELSE 's' END||'.jpg')
             , (/*DiGiket*/'https://img.digiket.net/cg/' || to_number(substring(gl.digiket, 4,3),'999') || '/'||gl.digiket||'_2.jpg')
             , (/*Gyutto*/'https://gyutto.com/data/item_img/'||left(gl.gyutto_id, -2)||'/'||gl.gyutto_id||'/'||gl.gyutto_id||'_p_m2.jpg')
             , (/*Getchu*/'https://image.getchu.com/afimage/'||floor(gl.comike::real / 1000)::text||'000/'||gl.comike||'/afimg_'||gl.comike||'_120.jpg')
             , '') AS doujin_image
        FROM gamelist AS gl
     ) AS foo ON foo.id = gl.id
----------------- 最終セール時価格
    LEFT OUTER JOIN (
        SELECT sale.game, sale.e
           ,CASE WHEN sale.e < CURRENT_TIMESTAMP THEN '<span class="not_sale_now">最終セール時: ' || sale.c || ' ' || TO_CHAR(sale.e, 'YYYY-MM-DD') || '</span>' ELSE '<span class="now_on_sale"><img src="./sale.png" class="sale_icon" title="' || sale.name || '" alt="' || sale.name || '"> ' || sale.c || '<span class="text-nowrap">~' || TO_CHAR(sale.e, 'MM-DD HH24:MI') || '</span></span>' END セール時最終
           ,CASE WHEN sale.e < CURRENT_TIMESTAMP THEN '' ELSE '<img src="./sale.png" class="sale_icon" title="' || sale.name || '" alt="' || sale.name || '">' END セール中
           ,sale.rownum 
        FROM (
            SELECT sl.name, game,end_timestamp as e, cg.content as c, ROW_NUMBER() OVER (PARTITION BY game ORDER BY end_timestamp DESC, cl.id DESC) rownum
            FROM campaignlist cl INNER JOIN campaign_game cg ON cg.campaign=cl.id INNER JOIN storelist sl ON cl.store = sl.id ) sale
        WHERE sale.rownum=1) ls ON ls.game = gl.id
----------------- 
    LEFT OUTER JOIN userreview uv ON gl.id = uv.game AND uv.uid = '{user_id}'

WHERE
    sh.creater = {SQL_CREATOR_ID}
    AND sh.shubetu = 6
{SQL_YEAR_LINE}    AND gl.sellday BETWEEN '{SQL_YEAR_FROM}-01-01' AND '{SQL_YEAR_TO}-12-31'
ORDER BY
    gl.sellday DESC
    ,gl.id
</SQL4>
*/
    

表紙
 ひろいん
 egamescape @ gmail.com