对MySQL加入真的很困惑

时间:2012-12-05 11:48:24

标签: php mysql join

我自己一直在努力解决这个问题,但互联网上的所有教程都不起作用,或者它们写成了一半......没有人解释你是如何回应内容的。

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

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

没有人提供有关如何回显内容的信息,因为两个表都有相同名称的列,我该如何实际执行此操作?我不明白......

这是我目前的查询:

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

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

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

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

试试这个::

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

ORDER BY `hits` DESC LIMIT 9

答案 3 :(得分:1)

我想,你需要知道表别名。因此,您可以将两个别名[新名称]用于两个表,并在选择查询中单独引用它们。 由于有很多例子,我不会在这里重写。请看这里: http://www.w3schools.com/sql/sql_alias.asp Table alias

答案 4 :(得分:0)

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

试一试..