0

クエリを実行する次のテーブルがあります。

categories
  -id
  -name
  -parent_id
  -last

products2categories
  -id
  -product_id
  -category_id

私がやろうとしているのは、レコードを取得することcategory namecategory idありproduct_id、テーブル内のproducts2categories10 とlastテーブル内のcategories1 です

これは私が実行しようとしたクエリです:

SELECT `categories.id`,`categories.name` 
FROM `categories` 
JOIN `products2categories` 
ON `categories.id` = `products2categories.category_id`
WHERE `categories.last` = 1 
AND `products2categories.product_id`= 10

次のエラーで返されました。

#1054 - Unknown column 'categories.last' in 'where clause'

私が取得しようとしているものを示すには:

categories
  -id          8
  -name        "my_name"
  -parent_id   0
  -last        1

products2categories
  -id          1
  -product_id  10
  -category_id 1

結果として「my_name」の ID と名前を取得したいのですが8、products2categories テーブルに基づいている必要があります。これは、1 つの製品が関連する複数のカテゴリを持つことができるためです。

前もって感謝します!

4

4 に答える 4

1

単一の識別子をバッククォートで囲みます。

そう

`categories.last`

する必要があります

`categories`.`last`

テーブル名と列名は別の識別子であるためです。

ちなみに、この場合、バッククォートはまったく必要ないので、次のようにバッククォートを削除すると問題なく動作するはずです。

categories.last

バッククォートは、スペースまたはその他の特殊文字を含む列名にのみ必要です。また、状況によっては、予約語と同じ名前の場合もあります。しかし、私が知る限り、あなたのケースではそれらはまったく必要ありません。

于 2013-08-09T11:20:28.827 に答える
1

フィールドの区切りが間違っています。テーブル名と列名を別々に区切ります。

SELECT `categories`.`id`,`categories`.`name` 
FROM `categories` 
JOIN `products2categories` 
ON `categories`.`id` = `products2categories`.`category_id`
WHERE `categories`.`last` = 1 
AND `products2categories`.`product_id`= 10
于 2013-08-09T11:21:20.583 に答える