0

我的数据库中有两个表。一个命名jokes,另一个命名category

这是用类别名称显示每个笑话的 PHP。

SELECT  jokes.*, 
        category.name 
FROM jokes jokes 
LEFT JOIN category category ON category.category_id = jokes.category_id 
ORDER BY joke_id DESC';

我将如何更改$sql变量的查询以仅显示表中的特定类别?例如,一个只显示短笑话的短笑话页面。

4

2 回答 2

0

很明显你的问题与PHP无关,只是一个sql问题。

无论如何,绑定到单个类别的所有查询的底线是在您列出表名之后添加 WHERE 关键字,然后是您希望搜索的列名及其搜索值。

例子:

$sql = "SELECT * FROM joke j WHERE j.category  = :cat";

假设您足够聪明,可以使用准备好的语句。然后,您可以执行一个变量数组,将short其实际 id 作为变量,指示要搜索的类别。

一般来说,SELECT *从表中提取是一种不好的做法,因为这是一个性能问题,你真的需要所有数据吗?您是否希望通过告诉表中需要哪些列来使查询更加清晰?

对于您的情况:

$sql = 'SELECT jokes.*, category.name 
FROM jokes jokes 
LEFT JOIN category category 
ON category.category_id = jokes.category_id 
WHERE jokes.category_id = :cat 
ORDER BY joke_id DESC';
于 2013-11-07T00:04:38.687 回答
0

添加一个WHERE子句

SELECT jokes.*, category.name FROM jokes jokes 
LEFT JOIN category category ON category.category_id = jokes.category_id 
WHERE category.category_id = x
ORDER BY joke_id DESC

另外,你到底为什么要给你的表一个同名的别名?

SELECT * FROM jokes j 是典型的方式。

于 2013-11-07T00:08:17.140 回答