2013-10-12 97 views
0

首先,我只想說我對這個可憐的標題感到抱歉。我真的很努力地用簡短的句子來解釋我所面臨的問題。從一個表中選擇其中存在id(來自另一個表)

我有一個名爲演員表包含一個援助(主鍵)aName和一些更多的東西。我也有一個名爲的視頻其中包含vID(主鍵)等數據。我擁有的第三個和最後一個表稱爲連接,其中一個包含主鍵,cVideoIDcActorID

比方說,我創建了一個視頻,當我導航到視頻* www.example.com/video.php?v = primary_key *我想打印出所有在該電影中的演員(actor1, actor2,actor3和actor4)。爲此,我創建了連接 - 表來跟蹤所有電影演員連接。對於我創作的每部電影,我都將演員與電影聯繫起來。

我以爲我可以做這樣的事情:

<?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

你可能正在尋找表上的連接。 – nickb

+0

@nickb從未完全理解JOIN。介意給我一個例子? :) –

+0

當然,我已經添加了一個答案以及一個示例SQL小提琴鏈接。 – nickb

回答

2

你想要做的是從connections中選擇所有條目,其中視頻ID是選定的視頻。然後,您加入演員表,獲取有關所發現演員的所有信息。

示例:獲取所有演員的名字的特定視頻ID:

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

SQL Fiddle

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] 

現在首先你說你想趕上列援助和aName從數據庫下一個表使用FROM語句將連接表「導入」爲「c」。然後加載作者表並將其作爲「a」訪問(請參閱select語句a。[...]),並且還應該說它應該將每個c.cActorID = a.aID和最後你做一個聲明來聲明你只是在用c.cVideoId搜索視頻= [id]

相關問題