如何在 PHP PDO 中 select 一对多关系数据
How to select one to many relationship data in PHP PDO
我在 PHPMyAdmin 中总共有 3 tables:
电影:tmdb_movies
演员表:cast
。 table tmdb_movies
列 tmdb_id
screenshot
的外键是 cast_tmdb_id
流派:genres
。 table tmdb_movies
列 tmdb_id
screenshot
的外键是 genres_tmdb_id
我要输出以下字段:
movie_title
列来自 tmdb_movies
table
所有 genres_name
行来自 genres
table
所有 cast_name
行来自 cast
table.
select 和回显数据的最小命令是什么?我不熟悉 SQL.
中的 join
命令
这是我当前的代码
<?php
$stmt = $conn->prepare("SELECT tmdb_movies.*, GROUP_CONCAT(genres_name) as genres_name
FROM tmdb_movies JOIN genres ON tmdb_movies.tmdb_id=genres.cast_tmdb_id
GROUP BY tmdb_movies.cast_tmdb_id, tmdb_movies.tmdb_id, tmdb_movies.movie_title");
// Then fire it up
$stmt->execute();
// Pick up the result as an array
$result = $stmt->fetchAll();
// Now you run through this array in many ways, for example
foreach ($result as $row) {
print "".$row["movie_title"]." ".$row["genres_name"] ." ".$row["cast_name"] ."<br/>";
}
?>
SELECT tmdb_movies.movie_title, GROUP_CONCAT(DISTINCT genres.genres_name SEPARATOR ', ') AS genres_names, GROUP_CONCAT(DISTINCT cast.cast_name SEPARATOR ', ') AS cast_name
FROM tmdb_movies
JOIN genres ON tmdb_movies.tmbd_id=genres.genres_tmdb_id
JOIN cast ON cast.cast_tmdb_id=tmdb_movies.tmbd_id
GROUP BY tmdb_movies.movie_title
ORDER BY tmdb_movies.movie_title
解释:
GROUP_CONCAT => 在一个字段中连接来自不同行的字段
JOIN => 你让两个 table 通过它们的键
对应
GROUP BY => 按这些字段分组数据
我已经完成了我可以查询但实际上没有看到您的 table,所以如果它在第一次尝试时不起作用,您可能想要调整它。
我在 PHPMyAdmin 中总共有 3 tables:
电影:
tmdb_movies
演员表:
cast
。 tabletmdb_movies
列tmdb_id
screenshot 的外键是 流派:
genres
。 tabletmdb_movies
列tmdb_id
screenshot 的外键是
cast_tmdb_id
genres_tmdb_id
我要输出以下字段:
movie_title
列来自tmdb_movies
table所有
genres_name
行来自genres
table所有
cast_name
行来自cast
table.
select 和回显数据的最小命令是什么?我不熟悉 SQL.
中的join
命令
这是我当前的代码
<?php
$stmt = $conn->prepare("SELECT tmdb_movies.*, GROUP_CONCAT(genres_name) as genres_name
FROM tmdb_movies JOIN genres ON tmdb_movies.tmdb_id=genres.cast_tmdb_id
GROUP BY tmdb_movies.cast_tmdb_id, tmdb_movies.tmdb_id, tmdb_movies.movie_title");
// Then fire it up
$stmt->execute();
// Pick up the result as an array
$result = $stmt->fetchAll();
// Now you run through this array in many ways, for example
foreach ($result as $row) {
print "".$row["movie_title"]." ".$row["genres_name"] ." ".$row["cast_name"] ."<br/>";
}
?>
SELECT tmdb_movies.movie_title, GROUP_CONCAT(DISTINCT genres.genres_name SEPARATOR ', ') AS genres_names, GROUP_CONCAT(DISTINCT cast.cast_name SEPARATOR ', ') AS cast_name
FROM tmdb_movies
JOIN genres ON tmdb_movies.tmbd_id=genres.genres_tmdb_id
JOIN cast ON cast.cast_tmdb_id=tmdb_movies.tmbd_id
GROUP BY tmdb_movies.movie_title
ORDER BY tmdb_movies.movie_title
解释:
GROUP_CONCAT => 在一个字段中连接来自不同行的字段
JOIN => 你让两个 table 通过它们的键
对应GROUP BY => 按这些字段分组数据
我已经完成了我可以查询但实际上没有看到您的 table,所以如果它在第一次尝试时不起作用,您可能想要调整它。