如何在 PHP PDO 中 select 一对多关系数据

How to select one to many relationship data in PHP PDO

我在 PHPMyAdmin 中总共有 3 tables:

  1. 电影tmdb_movies

  2. 演员表cast。 table tmdb_moviestmdb_id screenshot

  3. 的外键是 cast_tmdb_id
  4. 流派genres。 table tmdb_moviestmdb_id screenshot

  5. 的外键是 genres_tmdb_id

我要输出以下字段:

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,所以如果它在第一次尝试时不起作用,您可能想要调整它。