2012-10-09 97 views
0

我收到以下錯誤:當我運行以下MySQL的內部連接語句錯誤

1052 - Column 'product_id' in field list is ambiguous

SELECT `product_id`, `product_name` 
FROM `products` 
INNER JOIN `products_has_product_category` 
    ON `products.product_id` = `products_has_product_category.product_id` 
    AND `products_has_product_category.category_id` = 1 
ORDER BY `products.product_name` 

PRODUCTS表已經

product_id, product_name, etc 

products_has_product_category表有

product_id, category_id 

這是我第一次嘗試加入,所以我很感謝幫助!

回答

1

您需要指定product_id來自哪個表。由於product_id在兩個表格中,所以當您需要指定要從哪個表格中獲取值時,您需要使用SELECT。隨着表的別名:

SELECT p.product_id, p.product_name 
FROM `products` p 
INNER JOIN `products_has_product_category` pc 
    ON p.product_id = pc.product_id 
    AND pc.category_id = 1 
ORDER BY p.product_name 

無表的別名:

SELECT `products`.`product_id`, `products`.`product_name` 
FROM `products` 
INNER JOIN `products_has_product_category` 
    ON `products.product_id` = `products_has_product_category.product_id` 
    AND `products_has_product_category.category_id` = 1 
ORDER BY `products.product_name` 
+0

謝謝你,那結果是正是我所期待的。 – Adam

0

如果我正確理解你的意圖,你可能是指在哪裏,而不是AND:

SELECT `products`.`product_id`, `products`.`product_name` 
      FROM `products` 
      INNER JOIN `products_has_product_category` 
      ON `products.product_id` = `products_has_product_category.product_id` 
      WHERE `products_has_product_category.category_id` = 1 
      ORDER BY `products.product_name` 
+0

是的,這就是我的意思,我在代碼中有AND。 – Adam

+0

讓我改述 - WHERE而不是AND。連接是在兩個表之間的關係上執行的,而不是在表中的值和列之間進行的。條款用於後一種情況。 – blearn

+0

對不起,我想知道你說了什麼,但bluefeet的答案是我正在尋找的。我測試了你的答案,並且我仍然得到了1052 - 字段列表中的列'product_id'是模棱兩可的錯誤。 – Adam