我很难解决这个问题。希望有人可以帮助我解决这个问题。



例如。我有一个视频网站,在这个视频网站中,我可以提交视频帖子,并标明该视频中播放的人的名字。但我不想仅添加1个名称,也可以添加更多名称。因此,我将拥有一个video.php页面,在此页面中,我可以提交视频的视频标题以及其中播放的人员的姓名。

表格:发布

    -------------------------------------------
  -- video_id ---- video_name ----  video_cast --
    -------------------------------------------
       1              Vid-1           1
       2              Vid-2           2
       3              Vid-2           2


表:演员表

    -----------------------------------------
  -- cast_id ----  cast_name ----  cast_video --
    -----------------------------------------
       1              John            1
       2              Erik            2
       3              Ela             2


现在,如果我会在我的主页上,并且看到此新帖子。如果我点击它。它将在标头中发送video_id信息,因此我可以从video.php中获取它。

页面:video.php

<?php

    $id = $_GET['id'];
    $result = mysql_query
    ("
        SELECT *
        FROM post
        LEFT JOIN cast
        ON post.video_cast = cast.cast_video
        WHERE video_id='$id'
    ");

    while($row = mysql_fetch_array($result)){
        echo '
                   <h1>'.$row['video_name'].'</h1>
                   starring: '.$row['cast_name'].
                 ';
    }
?>


现在,我将如何显示与视频关联的video_name和所有cast_name。我使用的JOIN代码只能在表格中显示1个名称。有人知道我该如何获取其他剩余的姓名?

最佳答案

您可以使用group_concat()在第一行中列出名称

 SELECT video_name, group_concat(cast_name) cast
 FROM post
 LEFT JOIN cast ON post.video_cast = cast.cast_video
 WHERE video_id='$id'
 group by video_name

关于php - 如何在多行中以相同的ID在MYSQL中联接2个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18103551/

10-16 00:38