如何在多行中使用相同ID在MYSQL中加入2个表

时间:2013-08-07 12:35:30

标签: php mysql join row

我很难搞清楚这一点。希望有人可以帮我解决这个问题。


例如。我有一个视频网站,在这个视频网站上,我可以提交视频帖子,其中包含播放此视频的人的姓名。但我不想只添加一个名字,它可以更多。所以我有一个 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个名称。有人知道我怎么能取其他名字吗?

1 个答案:

答案 0 :(得分:3)

您可以使用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