0

データベースに 2 つのテーブルがあります。1 つは という名前jokesで、もう 1 つは という名前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

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 に答える
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 に答える