簡體   English   中英

SQL查詢產生了我無法解決的錯誤

[英]SQL query is producing an error which I can't solve

我有以下即時查詢的表格:

categories
  -id
  -name
  -parent_id
  -last

products2categories
  -id
  -product_id
  -category_id

我想做的是獲取記錄的category namecategory id ,表products2categoriesproduct_id為10,表categories last為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

我已返回以下錯誤:

#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

結果,我想獲取ID 8和名稱“ my_name”,但它必須基於表products2categories,導致一種產品可以具有與其相關的多個類別。

提前致謝!

更換

WHERE `categories.last` = 1 

WHERE `categories`.`last` = 1 

轉義列和表名的反引號不能用於轉義表和列的組合。 它必須同時應用於兩者。

快速檢查語法: categories.last不應該是categories last呢?

對所有其他“字段”執行相同的操作

在單個標識符周圍使用反引號:

所以

`categories.last`

應該

`categories`.`last`

因為表名和列名是單獨的標識符。

在這種情況下,順便說一下,您根本不需要反引號,因此如果刪除它們,它應該可以正常工作,如下所示:

categories.last

僅在包含空格或其他特殊字符的列名中使用反引號,在某些情況下可能需要使用等於某些保留字的名稱。 但是據我所知,您根本不需要它們,而且我不記得每個人都必須使用它們。

您不正確地分隔字段。 分別分隔表名和列名:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM