2013-10-17 54 views
0

我其實不太確定我是否需要加入。這是真正的唯一的事情,同時學習SQL,我並沒有真正理解或過於講究,但基本上我有2個表:如何在代碼中使用連接?

games 
subgames 

在遊戲中我有gamesname行:

Final Fantasy 
Metal Gear Solid 
Yu-Gi-Oh 

在子博弈我有子游戲名稱行:

Metal Gear Rising 

它們都有一個id的自動增量。不過,我試圖將我的遊戲顯示爲可點擊鏈接,然後刷新頁面並顯示子游戲。因此,舉例來說,如果我點擊Metal Gear Solid它會帶你到games.php?subgame=Metal%20Gear%20Solid並顯示Metal Gear Rising。這是我迄今爲止,但它不顯示Metal Gear Rising,可能是因爲我有一個表中的遊戲和另一個沒有相互引用的子游戲。

所以我的問題是,我怎麼能引用它們在我的代碼,以便正常顯示?

<?php 
$sub = $_GET['subgame']; 
if($sub){ 
$result = mysql_query("SELECT $sub FROM games"); 
while ($row = mysql_fetch_array($result)) { 
printf("%s<br />", $row["subgamename"], $row["subgamename"]); 
} 
} 
else{ 
$result = mysql_query("SELECT gamename FROM games ORDER BY gamename"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
printf("<a href='games.php?subgame=%s'> %s </a><br />", $row["gamename"], $row["gamename"]); 
} 
} 
?> 
+0

加入時,有兩個表之間的關係被使用。遊戲和子游戲如何相互關聯?在'subgames'表中有'game_id'這個列表示它是一個子遊戲嗎? – Barmar

+0

看起來你錯過了兩張表之間的關係。子游戲表應該包含父遊戲表的ID的外鍵,以將兩者連接在一起。 –

+0

在這裏你可以看到一個很好的加入視覺解釋: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Marcos

回答

1

您的查詢是錯誤的。什麼是:

$result = mysql_query("SELECT $sub FROM games"); ????

應該

mysql_query("SELECT subgamesname FROM subgamesname where gamesName ='".$_GET['subgame']."'"); 

但你參數的名稱是不直觀subgame,它應該是gameName因爲你通過搜索遊戲名稱

+0

看到這個代碼,它會搜索子游戲名稱內的遊戲名稱,但我沒有在兩個表中列出的遊戲,沒有看到兩次列表中的點。 – CrayEightz

0

你可能想查詢的是:

$sub = mysql_real_escape_string($_GET['sub']); 
$query = " 
    SELECT subgamesname 
    FROM subgames s 
    JOIN games g ON g.id = s.game_id 
    WHERE g.gamesname = '$sub' 
"; 

我假設subgames表有game_id列是games表的外鍵。您需要將這些列名稱替換爲模式中實際使用的名稱。

+0

這就是我正在尋找的東西,它對我來說沒有意義?它如何知道要列出遊戲中游戲桌上的所有子游戲?我知道它從$ sub獲得遊戲名稱,但是gameid或子游戲ID都不是按照順序鏈接在一起的。它也不適用於我,它給出了警告:mysql_fetch_array()期望參數1是資源,布爾在第54行/public_html/series.php中給出。 – CrayEightz

+0

它知道,因爲它們通過'g.id = s.game_id'的關係。你是否用表中的實際列名取代了它們? – Barmar

相關問題