如何回显两个不同但相关的MySQL表中的元素?

时间:2012-09-06 15:09:07

标签: php mysql

好的,我在MySQL中有这两个表。一个被称为“历史”,一个被称为“注释”。

“历史记录”表格中包含可以重复的随机YouTube视频ID。 “带注释”表包含每个视频ID的唯一副本以及该ID的描述。看起来像这样:

History                            Annotated

video id                   video id         description

id_1                       id_1             description_1
id_1                       id_2             description_2
id_3                       id_3             description_3
id_2                       id_4             description_4
id_3                       etc.             etc.
id_1
id_4
id_2
etc.

好的,历史表的顺序非常重要。我想在我的页面上打印订单(重复和所有),但是我想在它们旁边的Annotated表中打印它们各自的描述,所以它看起来像这样:

id_1   -    description_1
id_1   -    description_1
id_3   -    description_3
id_2   -    description_2
id_3   -    description_3  
id_1   -    description_1
id_4   -    description_4
id_2   -    description_2
etc.        etc.

到目前为止,我已经查询了数据库,并从我想要打印的历史记录中创建了所有videoid的数组。代码如下所示:

$query = mysql_query("SELECT `videoid` FROM `History` WHERE BLAH BLAH;");
$idVideoColumn = array();
while($row = mysql_fetch_array($query)){
      $idVideoColumn[] = $row['videoid'];
}
$implodedIdVideo = "'".implode("', '", $idVideoColumn)."'";

所以我的视频列表已准备好包含在变量$ implodedIdVideo中的MySQL查询。任何人都知道是否可以打印我正在尝试做的事情? (请不要回答我已弃用的​​MySQL语法)

3 个答案:

答案 0 :(得分:0)

SELECT h.videoid, a.description
    FROM history h
        INNER JOIN annotated a
            ON h.videoid = a.videoid
    WHERE blah blah
    ORDER BY h.SomeColumnForOrdering;

答案 1 :(得分:0)

   $sql =  select video_id , description from history A , annotated B   where A.video_id = B.video_id ORDER BY A.video_id DESC;

你必须预先加入以获得欲望的结果。

您粘贴了错误的代码:

while($row = mysql_fetch_array($query)){
      $idVideoColumn[] = $row['videoid'];
}

$ idvideoCoulm应为空,因为您使用mysql_fetch_array来获取结果,然后将$ row ['videoid']分配给名称为index的$ idVideoColumn []。这可能永远不会发生,因为mysql_fetch_array总是通过数组索引返回值,你应该使用mysql_fetch_assoc。

$str = "" ;
while($row = mysql_fetch_assoc($query)){
      $str .= $row['videoid'] . ',' . $row['description'] ; 
}

答案 2 :(得分:0)

呃,我无法使用连接表。我对MySQL的了解还不够好。我决定采用笨重的灵活方式。

$query4 = mysql_query("SELECT `videoid` FROM `History` WHERE BLAH BLAH;");
$idVideoColumn = array();
while($row = mysql_fetch_assoc($query4)){
    $idVideoColumn[] = $row['videoid'];
}
$implodedIdVideo = "'".implode("', '", $idVideoColumn)."'";
$length = count($idVideoColumn);



$i = 0;
while($i < $length) {
    $query = mysql_query("SELECT `description` FROM `Annotated` WHERE `videoid` = '".$idVideoColumn[$i]."';");
    $result = mysql_fetch_assoc($query);
    echo $idVideoColumn[$i] . " --- " . $result['description']."<br /><br />";
    $i = $i + 1;
}
相关问题