0

さて、MySQL にこれら 2 つのテーブルがあります。1 つは「履歴」と呼ばれ、もう 1 つは「注釈付き」と呼ばれます。

「履歴」テーブルには、繰り返すことができるランダムな 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.

履歴テーブルの順序は非常に重要です。注文 (重複およびすべて) を自分のページに印刷したいのですが、横にある注釈付きテーブルからそれぞれの説明を印刷したいので、次のようになります。

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 クエリの準備ができた videoid のリストができました。私がやろうとしていることを印刷できるかどうか誰でも知っていますか? (そして、非推奨の MySQL 構文については回答しないでください)

4

3 に答える 3

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;
于 2012-09-06T15:11:34.067 に答える
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'];
}

結果を取得するために mysql_fetch_array を使用しているため、$idvideoCoulm は空である必要があります。mysql_fetch_array は常に mysql_fetch_assoc を使用する必要がある配列インデックスによって値を返すため、これは決して起こり得ません。

$str = "" ;
while($row = mysql_fetch_assoc($query)){
      $str .= $row['videoid'] . ',' . $row['description'] ; 
}
于 2012-09-06T15:41:08.097 に答える
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;
}
于 2012-09-06T15:56:04.790 に答える