1

我真的一直在尝试自己弄清楚这一点,但是互联网上的所有教程要么不起作用,要么写了一半……没有人解释您如何回显内容。

现在我正在拉一个热门搜索表......我想显示名称,然后是它下面的类别名称。但问题是,搜索表将类别存储为 ID 而不是名称。

所以我需要使用一个连接,它将“popular_search”表中的“category_id”列链接到“categories”表中的“id”列......然后显示“categories”中的“name”列" 表以显示类别名称。

没有人提供有关如何回显内容的信息,因为两个表都有同名的列,我该怎么做?我不明白...

这是我当前的查询:

SELECT * FROM popular_search ORDER BY `hits` DESC LIMIT 9

这是我当前的回声,但我需要用另一个表中的类别名称替换 id 字段:

<?php echo $item['name']; ?>
<?php echo $item['category_id']; ?>
4

5 回答 5

5

使用AS应该适合你:

SELECT
    ps.*,
    ca.name as `category_name`
FROM
    `popular_search` as `ps`
INNER JOIN
    `categories` as `ca`
ON
    ps.category_id = ca.id
ORDER BY
    ps.hits DESC
LIMIT 9

现在它将在您的数组中作为category_name.

你可以在这里阅读更多:http: //dev.mysql.com/doc/refman/5.0/en/select.html

于 2012-12-05T11:52:08.670 回答
2

在 SELECT 中指定列名(而不是 SELECT *)。

给 coumn 名称别名(即SELECT a.Column1 AS Fred, Fred 是别名)

于 2012-12-05T11:51:54.483 回答
1

试试这个::

SELECT 
* 
FROM 
popular_search ps
inner join categories c on (ps.category_id = c.id)

ORDER BY `hits` DESC LIMIT 9
于 2012-12-05T11:50:18.353 回答
1

我想,你需要知道表别名。因此,您可以对两个表使用两个别名[新名称],并在选择查询中分别引用它们。例子很多,这里就不重复了。请看这里: http ://www.w3schools.com/sql/sql_alias.asp 表别名

于 2012-12-05T11:56:09.880 回答
0

这正是您正在寻找的东西 http://www.w3schools.com/sql/sql_join_inner.asp

试试看 ..

于 2012-12-05T11:53:28.510 回答