从一个表中选择id(来自另一个表)存在

时间:2013-10-12 22:27:54

标签: php mysql multiple-tables connection

首先,我只想说我很抱歉这个糟糕的头衔。我真的很挣扎着用一个简短的句子来解释我所面临的问题。

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

假设我创建了一个视频,当我导航到视频时* www.example.com / video.php?v = primary_key *我想打印出该电影中的所有演员(actor1,actor2) ,actor3和actor4)。因此,我创建了 connections -table来跟踪所有电影 - 演员连接。对于我创作的每部电影,我都将演员与电影联系起来。

我以为我可以这样做:

<?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> ';
    }
?>

但似乎这不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您要执行的操作是从connections中选择所有条目,其中视频ID是所选视频。然后,您在actors表上加入,以获取有关找到的actor的所有信息。

示例:获取特定视频ID的所有演员姓名:

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

SQL Fiddle

答案 1 :(得分: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和结束你做一个where语句来声明你只用c.cVideoId = [id]

搜索视频