2017-06-20 63 views
0

我有这个MySQL Statment的问题。所以基本上我有一个名为游戏的表,我想 在我的网站上显示此表。桌面游戏具有Foregin Keys,如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,如果你有多个FK从一个表中。来自同一个表的多个外键

如果你需要更多的信息告诉我。我还将包括我的数据库和我的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>'; 
} 

Picture of my DataBase

+0

你得到的所有其他领域的ID太正确,像类,平台等?你是否也想要这些表中的所有值? –

+0

是的,我也想要他们的价值观。 – krneki

+0

从这张图片中,很多关系看起来像是“多对多”(一个游戏可以有多个平台,一个平台可以有多个游戏)......所以你可能不会想要一个“在这种情况下,JOIN'因为每次平台都会检索到相同的游戏数据(除非你遇到一个非常笨重的'GROUP_CONCAT ... GROUP_BY'类路径) - 你可能会更好地在循环,如果你真的**需要他们在这一点上。 – CD001

回答

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