我正在进行mySql SELECT:
SELECT name, description, brand, Providers.name, Categories.name, sellingPrice, quantity
FROM Products
INNER JOIN Providers ON Products.idProvider = Providers.id
INNER JOIN Categories ON Products.idCategory = Categories.id
WHERE category = 'tools';
但我变成了这个错误:
Error Code: 1052. Column 'name' in field list is ambiguous
即使我指定了"Table.column"(Providers.name,Categories.name(.
请帮忙??
您一开始是否尝试删除名称字段?试试这个代码
SELECT description, brand, Providers.name, Categories.name, sellingPrice, quantity
FROM Products
INNER JOIN Providers ON Products.idProvider = Providers.id
INNER JOIN Categories ON Products.idCategory = Categories.id
WHERE category = 'tools';
类似地,在select中提供适当的Table.Column映射。如果您在Products表中有一个名称字段,请在select 中包含Products.name
无论何时联接表,都可能在多个表中找到相同的列名。SQL引擎不知道该选择哪个。因此,为了进行区分,您需要指定适当的映射。也可以指定简单的Alias名称,而不是完整的表名称。
简单规则:在编写查询时限定所有列名。总是
如果给表提供合理的别名,这很容易。所以你的查询应该是这样的:
SELECT p.name, p.description, p.brand, pr.name, c.name, p.sellingPrice, p.quantity
FROM Products p JOIN
Providers pr
ON p.idProvider = pr.id JOIN
Categories c
ON p.idCategory = c.id
WHERE c.category = 'tools';
我猜这些列来自哪些表,所以限定名称可能不正确(您的问题没有提供这些信息(。