0

首先,我只想对糟糕的标题表示抱歉。我真的很难用一句话来解释我面临的问题。

我有一个名为actor的表,其中包含一个aID(主键)和一个aName以及更多内容。我还有一个名为videos的表,其中包含vID(主键)和其他数据。我拥有的第三个也是最后一个表称为连接,其中一个包含一个主键、一个cVideoID和一个cActorID

假设我创建了一个视频,当我导航到视频 *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 是所选视频。然后,您在演员表上加入,以获取有关已找到的演员的所有信息。

示例:获取特定视频 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]

现在首先你说你想从表a中捕获列aID和aName的数据库接下来你使用FROM语句将连接表“导入”为“c”。然后加载作者表并使其可作为“a”访问(参见 select 语句 a.[...]),并且您还说它应该在每个 c.cActorID=a.aID 和最后你做一个 where 声明来声明你只搜索带有 c.cVideoId=[id] 的视频

于 2013-10-12T22:53:58.003 回答