簡體   English   中英

如何獲得其他表(如電影數據)的值是由php,sql group_concat / internal join或任何ID中的ID組成的

[英]How to get value of other table like a movies data was conected by ID in php, sql group_concat / inner join or any

如果我有這樣的桌子

anime(ID,anime_name,genres,studio,series)
anime_genres(ID,anime_id,genres_id)
anime_studio(ID,anime_id,studio_id)
anime_series(ID,anime_id,series_id)

genres(ID,genres_name)
studio(ID,studio_name)
series(ID,series_name)

問題:如何獲取這樣的數據。

ID | anime_name |        genres                  |      studio                | series
1  | Uq holder  | (1)action,(2)fantasy,(3)isekai |(1)A-1,(2)pierot,(3)tvtokyo | neginegima

我嘗試這樣

    SELECT anime.ID ,anime_name
     FROM anime 
    INNER JOIN (SELECT genres_id FROM anime_genres WHERE anime_id = genres ) as genre_selector
    ON genre_selector.genres = anime.genres
     INNER JOIN (SELECT genres_name FROM genres WHERE ID = genres_id) as genre_data
 ON genre_data.genres_id = anime_genres.genres_id
   ORDER BY anime.ID

我用它來運行查詢

$stmt = $reg_anime->animeQuery(sql statement); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['ID']. ' : '. $row['anime_name']. ' '. $row['genres_name']. ' - '. $row['genres']. '<br />'; }

您可以在sql中完成所有操作,盡管我承認這有點難看。

SELECT 
a.Id,
a.anime_name,
(
    STUFF((
    SELECT TOP 3 ',' + g.genres_name
    FROM 
    anime_genres ag INNER JOIN genres g
    ON ag.genres_id = g.id
    WHERE ag.anime_id = 1
    FOR XML PATH('')
    ), 1, 1, '')
) AS genres,
(
    STUFF((
    SELECT TOP 3 ',' + s.studio_name
    FROM 
    anime_studio as INNER JOIN studio s
    ON as.studio_id = g.id
    WHERE ag.anime_id = 1
    FOR XML PATH('')
    ), 1, 1, '')
) AS studio,
anime.series
FROM anime a
WHERE 
a.ID = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM