2017-06-20 60 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