[英]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.