Идентификатор столбца в списке полей неоднозначен - Система рекомендаций - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь вывести список продуктов, в которых коде занятийID соответствует идентификатору занятия на моих счетах в таблице, и по-прежнему получаю вышеуказанную ошибку.

SELECT productID, productName, productDesc, productImgPath, 
       productPrice, catID, occupationID, Accounts.occupationID  
FROM Products 
JOIN Accounts ON occupationID = Accounts.occupationID 
WHERE occupationID = Accounts.occupationID

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Это потому, что оккупация является неоднозначным в продуктах и ​​аккаунтах.
Полностью квалифицируйте поле.

    SELECT productID, productName, productDesc, productImgPath, productPrice, P.catID, P.occupationID, A.occupationID
    FROM Products P JOIN Accounts A ON P.occupationID = A.occupationID

Примечание: ваше предложение WHERE является избыточным, поскольку об этом позаботились в соединении.

0 голосов
/ 07 мая 2018

Я не нашел ни одного столбца id в вашем запросе, но я бы предложил использовать alise, который легче читать и писать.

SELECT p.productID, p.productName, p.productDesc, p.productImgPath, 
       p.productPrice, a.catID, p.occupationID, a.occupationID  
FROM Products p -- use of alise p instead of table_name
INNER JOIN Accounts a ON p.occupationID = a.occupationID 
--WHERE occupationID = Accounts.occupationID (redundant where clause)

Пожалуйста, проверьте выбор столбца и используйте точную или правильную таблицу alise.

0 голосов
/ 07 мая 2018

Хотя у вас нет столбца «id» - я думаю, вам просто нужно полностью уточнить ваше заявление;

SELECT productID, productName, productDesc, productImgPath, 
       productPrice, catID, occupationID, Accounts.occupationID  
FROM Products 
JOIN Accounts ON Products.occupationID = Accounts.occupationID 

Вам больше не нужен ГДЕ, поскольку он делает то же самое, что и соединение

WHERE Products.occupationID = Accounts.occupationID
...