关联db中不同表的两个元素

时间:2014-03-18 20:12:04

标签: php mysql

我不知道要解释多少,所以我会给出我的情况,这样你就能更好地理解我。

我有一个游戏网页。在我的数据库中,我有两个表:一个包含我的游戏(包括id,名称,描述,类别 (这是一个数字,而不是字符串)等列。),另一个与我的类别(带有id和名称) 当我上传游戏时,我没有在类别列中分配类别的名称,而是分配一个数字,在类别表中对应的数字(我使用这样的选择选项:

<option value="'.$row['id'].'">'.$row['name'].'</option>

(这是在一个select标签内(在一个表单内)并带有一个foreach语句,因此它显示了所有选项。)

所以现在,我想要的是当我使用'SELECT * FROM games'从数据库中捕获游戏时,如果我调用category元素,而不是获取类别的id,则分配id与类别名称...我不知道要解释多少,但我希望你能理解我。

那么,我应该使用什么?

3 个答案:

答案 0 :(得分:0)

您可以使用LEFT JOIN来提取类别名称。例如:

SELECT 
  g.id g_id,
  g.name g_name,
  g.desc g_desc,
  c.name c_name
FROM games g
LEFT JOIN
  categories c
    ON c.id = g.category

这是一个示例,您需要选择正确的列并指定唯一的别名。

答案 1 :(得分:0)

我认为您想要加入表格,以便从同一查询中获取类别名称。

你可以这样做:

$result = mysql_query("SELECT * FROM games, category WHERE games.category = categoyry.id) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
    echo $row['games.name'].' '.$row['category.name'];
}

答案 2 :(得分:0)

只需加入它们就可以使用“INNER JOIN或JOIN”从两个表中获取结果。

`SELECT g.*,c.*
 FROM games g
 INNER JOIN categories c on c.categoryid = g.categoryid;`

这将为您提供相关类别的那些。 但是如果你使用“左加入”它会给你游戏中的所有东西(http://www.sitepoint.com/understanding-sql-joins-mysql-database/

`SELECT g.*,c.*
 FROM games g
 LEFT JOIN categories c on c.categoryid = g.categoryid;`