如何使用复合主键从特定字段获取数据?
How can I get data from a specific field with a composite primary key?
我有三个 table,如下所示。 Shows-Actors table 中的 showid 和 actorid 来自 Shows and Actors table 中的 id 列。它们组合起来形成一个复合主键 - 一个演员可以出现在多个节目中,而一个节目可以有多个不同的演员。
_______ _______ _______________
|Actors | |Shows| |Shows-Actors |
--------- --------- --------------
|id|name| |id|name| |actorid|showid|
--------- --------- ---------------
|1 |Bob | |1 |GoT | | 1 |1 |
--------- --------- ----------------
|2 |Lou| |2 |TWD | | 1 |2 |
--------- --------- ----------------
我想在一个网站页面上显示所有演员姓名的列表,以及他们出现的所有节目。例如使用上面的数据,页面将显示:
1. 鲍勃。节目:GoT,TWD。
2.娄。显示:...等等
目前我有正确显示的演员列表,但我仍然不知道如何使用复合 PK 来获取每个演员出现过的所有节目的列表。
到目前为止,就与这个问题相关的代码而言,这是我所拥有的。
$query = "SELECT * FROM `Shows-Actors`
INNER JOIN `Actors`
ON `Actors`.`id` = `Shows-Actors`.`acid`
ORDER BY `Actors`.`name` ASC";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
while($actor = mysqli_fetch_assoc($result))
{
print '<tr>';
print '<td>'.$actor['name'].'</td>';
//Insert all shows that actor appears in here
print '</tr>';
}
我们将不胜感激。
您可以像这样加入 Shows
table:
SELECT
Actors.`name`,
Shows.`name`,
FROM `Shows-Actors`
INNER JOIN `Actors`
ON `Actors`.`id` = `Shows-Actors`.`acid`
INNER JOIN Shows
ON Shows.id = `Shows-Actors`.showid
ORDER BY `Actors`.`name` ASC
我有三个 table,如下所示。 Shows-Actors table 中的 showid 和 actorid 来自 Shows and Actors table 中的 id 列。它们组合起来形成一个复合主键 - 一个演员可以出现在多个节目中,而一个节目可以有多个不同的演员。
_______ _______ _______________
|Actors | |Shows| |Shows-Actors |
--------- --------- --------------
|id|name| |id|name| |actorid|showid|
--------- --------- ---------------
|1 |Bob | |1 |GoT | | 1 |1 |
--------- --------- ----------------
|2 |Lou| |2 |TWD | | 1 |2 |
--------- --------- ----------------
我想在一个网站页面上显示所有演员姓名的列表,以及他们出现的所有节目。例如使用上面的数据,页面将显示: 1. 鲍勃。节目:GoT,TWD。 2.娄。显示:...等等
目前我有正确显示的演员列表,但我仍然不知道如何使用复合 PK 来获取每个演员出现过的所有节目的列表。 到目前为止,就与这个问题相关的代码而言,这是我所拥有的。
$query = "SELECT * FROM `Shows-Actors`
INNER JOIN `Actors`
ON `Actors`.`id` = `Shows-Actors`.`acid`
ORDER BY `Actors`.`name` ASC";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
while($actor = mysqli_fetch_assoc($result))
{
print '<tr>';
print '<td>'.$actor['name'].'</td>';
//Insert all shows that actor appears in here
print '</tr>';
}
我们将不胜感激。
您可以像这样加入 Shows
table:
SELECT
Actors.`name`,
Shows.`name`,
FROM `Shows-Actors`
INNER JOIN `Actors`
ON `Actors`.`id` = `Shows-Actors`.`acid`
INNER JOIN Shows
ON Shows.id = `Shows-Actors`.showid
ORDER BY `Actors`.`name` ASC