我对此MySQL Statment有疑问。所以基本上我有一个叫做游戏的桌子,我想要 在我的网站上显示此表格。桌面游戏有像developer_id这样的外键, publisher_id,categorie_id,platform1_id,platform2_id,platform3_id,platform4_id,platform5_id。 我有5个平台,因为在Table平台上我有5条记录(PC,PS4,XB1,SWITCH,MOBILE)。 (如果你们知道这些平台的任何更好,更容易的解决方案请告诉我。) 所以现在我的网站上的输出有效,但是例如显示它显示的开发者名称 它的ID。我知道我必须INNER JOIN他们,我可能会INNER JOIN所有的外键,但是 平台一。因为如果你从一张桌子里拿出多于一个的FK,我不知道如何INNER JOIN。
如果您需要更多信息,请告诉我。我还将包括我的数据库和我的PHP代码的图片,其中我从桌面游戏中选择。
$query = "SELECT * FROM games WHERE id = $id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
while ($row = mysqli_fetch_array($result)) {
echo '<tr>';
echo '<td>'.$row['developer_id'].'</td>';
echo '<td>'.$row['publisher_id'].'</td>';
echo '<td>'.$row['categorie_id'].'</td>';
echo '<td>'.$row['platform1_id'].'</td>';
echo '<td>'.$row['platform2_id'].'</td>';
echo '<td>'.$row['platform3_id'].'</td>';
echo '<td>'.$row['platform4_id'].'</td>';
echo '<td>'.$row['platform5_id'].'</td>';
echo '<td>'.$row['game_name'].'</td>';
echo '<td>'.$row['relese_date'].'</td>';
$intro = $row['introduction'];
$desc = $row['description'];
echo '<td>'.$row['rating'].'</td>';
echo '</tr>';
}
答案 0 :(得分:0)
SELECT games.game_name, games.relese_date, games.introduction, games.rating, games.description, dev.name as developer, pub.name as publisher, (SELECT * FROM platforms WHERE platforms.id in (games.platform1_id,games.platform2_id,games.platform3_id,games.platform4_id,games.platform5_id)) as plats
FROM games
INNER JOIN developers AS dev ON dev.id = games.developer_id
INNER JOIN publishers AS pub ON pub.id = games.publisher_id
WHERE games.id = $id
请记住,平台将作为属性板下的集合列出,并且每个项都将是属性对象。
E.X。
return object=>
developer_id
publisher_id
categorie_id
plats => [
platform1_id=>name,
platform2_id=>name,
platform3_id=>name,
platform4_id=>name,
platform5_id=>name
]
game_name
relese_date
introduction
description
rating