2015-07-24 2 views
-1

Я написал процедуру, как показано ниженеоднозначных имя столбца «COUNTRYNAME»

BEGIN 
SELECT distinct countryname, countryid 
FROM Country c 
    Inner join Cause cs on cs.CountryName = c.CountryName 
END 

Он отображает сообщение об ошибке, как «Неоднозначное имя столбца„COUNTRYNAME“.»

Я хочу получить отдельные строки на основе countryname и countryid. Пожалуйста, помогите ...

+2

Использование 'c.CountryName' вместо' countryname' в 'п SELECT'. –

+0

используйте это: SELECT different c.countryname, c.countryid FROM Страна c Внутреннее соединение Причина cs на cs.CountryName = c.CountryName –

+0

Используйте псевдоним_каталога в списке выбора, потому что столбец countryname может присутствовать в обеих таблицах. – Buddi

ответ

2

Если в запросе то же имя столбца доступно на нескольких таблицах Интерпретатор должен знать, какой столбец имеется в виду.

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

SELECT DISTINCT c.countryname, countryid 
FROM Country c INNER JOIN Cause cs 
    ON cs.CountryName = c.CountryName 

или

SELECT DISTINCT cs.countryname, countryid 
FROM Country c INNER JOIN Cause cs 
    ON cs.CountryName = c.CountryName 

Предложения:

  • Вы можете указать псевдоним на все колонны al Пути

  • Создайте свою модель для объединения на уникальных целых или указательных указателях, избегая присоединения к «названиям стран», если вы не можете гарантировать 100%, что никогда не будет орфографических ошибок (и даже тогда это плохой дизайн).

2

Вы должны указать таблицу в списке. В качестве примера:

BEGIN 
SELECT distinct c.countryname, c.countryid 
FROM Country c 
    Inner join Cause cs on cs.CountryName = c.CountryName 
END 
1

При использовании alias для tables убедитесь, что поля для каждого из таблиц представлены их соответствующий псевдоним. Например, вы использовали псевдоним c для таблицы country и cs для cause, поэтому для использования любых столбцов с country используется таблица c.column_name. Ваше сообщение об ошибке отображается, поскольку в обеих таблицах может быть одинаковое имя столбца, а sql-server не знает, в каком столбце, из которого вы ссылаетесь.

Так что ваш код должен быть как

BEGIN 
SELECT distinct c.countryname, c.countryid 
FROM Country c 
    Inner join Cause cs on cs.CountryName = c.CountryName 
END 
Смежные вопросы