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 で列名を指定します。

カウント名にエイリアス名を付けます (つまり、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

テーブルエイリアスについて知る必要があると思います。したがって、2 つのエイリアス [新しい名前] を 2 つのテーブルに使用して、選択クエリで別々に参照できます。例がたくさんあるので、ここでは書き直さない。こちらをご覧ください: 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 に答える