sql 2005 – столбец был указан несколько раз

При попытке запустить этот запрос в sql 2005 я получаю следующую ошибку:

SELECT tb.* FROM ( SELECT * FROM vCodesWithPEs INNER JOIN vDeriveAvailabilityFromPE ON vCodesWithPEs.PROD_PERM = vDeriveAvailabilityFromPE.PEID INNER JOIN PE_PDP ON vCodesWithPEs.PROD_PERM = PE_PDP.PEID ) AS tb; Error: The column 'PEID' was specified multiple times for 'tb'. 

Я новичок в sql. Заранее благодарю за ваш совет.

Eneo.

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

  SELECT tb.* FROM ( SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID ) AS tb; 

В стороне, как замечает Крис Лайвли в комментарии, внешний SELECT полностью лишний. Следующее полностью эквивалентно первому.

  SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID 

или даже

  SELECT * FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID 

но, пожалуйста, избегайте использования SELECT * по возможности . Он может работать, когда вы делаете интерактивные запросы, чтобы сохранить ввод текста, но в производственном коде никогда не используйте его.

Похоже, у вас есть столбец PEID в обеих таблицах: vDeriveAvailabilityFromPE и PE_PDP . Оператор SELECT пытается выбрать оба параметра и дает ошибку о дублированном имени столбца.

Вы присоединяетесь к трем таблицам и просматриваете все столбцы на выходе (*).

Похоже, что в таблицах есть общее имя столбца PEID, которое вам нужно будет использовать как псевдоним.

Решение: не используйте * в подзапросе, но явно выбирайте каждый столбец, который хотите видеть, накладывая имя любого столбца, которое появляется более одного раза.

Вместо того, чтобы использовать * для определения сбора всех полей, перепишите свой запрос, чтобы явно указать нужные столбцы. Таким образом, не будет путаницы.

просто дайте новое имя псевдонима для столбца, который повторяется, это сработало для меня …..