我的数据库中有两个表。一个名为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
变量的查询以仅显示表中的特定类别?例如,一个简短的笑话页面,只显示简短的笑话。
答案 0 :(得分:0)
显然你的问题与PHP无关,这只是一个sql问题。
无论如何,绑定到单个类别的所有查询的底线是在列出表名后添加WHERE关键字,后跟要搜索的列名及其搜索值。 / p>
示例:
$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';
答案 1 :(得分: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
是典型的方式。