0

まず最初に言いたいのは、下手なタイトルで申し訳ありません。直面している問題を短い文で説明するのに本当に苦労しています。

aID (主キー)aNameなどを含む、 actorというテーブルがあります。また、 vID (主キー)とその他のデータを含むvideosというテーブルもあります。私が持っている 3 番目と最後のテーブルは接続と呼ばれ、そのテーブルには主キーcVideoIDcActorIDが含まれています。

ビデオを作成し、ビデオに移動したとします *www.example.com/video.php?v=primary_key* その映画に出演しているすべての俳優 (actor1、actor2、actor3 および俳優4)。そのため、すべての映画俳優の接続を追跡するために接続テーブルを作成しました。私が作成するすべての映画で、俳優と映画を結び付けます。

私はこのようなことができると思いました:

<?php
    $result2 = mysql_query("SELECT `actors`.`aID`, `actors`.`aName` FROM `actors` WHERE `connections`.`cVideoID` = {$_get['v']}");
    while($actors = mysql_fetch_array($result2))
    {
        echo "<a href='actor.php?id={$actors['aID']}>{$actors['aName']}</a> ';
    }
?>

しかし、それはうまくいかないようです。何か案は?

4

2 に答える 2

2

あなたがしたいことはconnections、ビデオ ID が選択されたビデオである からすべてのエントリを選択することです。次に、Actors テーブルに JOIN して、見つかったアクターに関するすべての情報を取得します。

例: 特定のビデオ ID のすべての俳優の名前を取得します。

SELECT a.aName 
FROM connections c 
  LEFT JOIN actors a 
  ON a.aID = c.aID 
WHERE c.vID = 1;

SQL フィドル

于 2013-10-12T22:52:26.670 に答える
1

ここで必要なのは結合です。通常の左結合は次のように機能します。

LEFT JOIN [name of table] [name of table you will want to use] 
       ON ([where statements searching for the right columns to join]) 

したがって、クエリは次のようになります。

   SELECT a.aID, a.aName 
     FROM `connections` c 
LEFT JOIN `author` a ON (c.cActorID=a.aID) 
    WHERE c.cVideoID=[id of the video]

まず最初に、テーブルから列 aID と aName を取得したいデータベースを指定し、次に FROM ステートメントを使用して接続テーブルを "c" として "インポート" します。次に、作成者テーブルをロードし、「a」としてアクセスできるようにします (select ステートメント a.[...] を参照)。また、c.cActorID=a.aID ごとに、および最後に、c.cVideoId=[id] を持つ動画のみを検索していることを宣言する where ステートメントを作成します。

于 2013-10-12T22:53:58.003 に答える