Является ли неоднозначное имя столбца ошибкой только для SQL Server

#sql #sql-server

#sql #sql-server

Вопрос:

Я просматриваю учебник по SQL, и команда, которую дал учебник, выдает мне ошибку в моей студии управления SQL Server «Неоднозначное имя столбца». Эта ошибка применима только при использовании SQL server?

введите описание изображения здесь

Комментарии:

1. Нет, эта ошибка применима в целом, и это очень плохое руководство, поскольку оно учит вас древнему join синтаксису, который вы должны отбросить. Также, пожалуйста, смотрите idownvotedbecau.se/imageofcode .

2. В руководстве не было ничего плохого, предполагалось, что запрос был неправильным.

3. Это плохой учебник, потому что синтаксис соединения, разделенный запятыми, устарел с момента введения SQL-92 почти 30 лет назад.

4. вредные привычки к объединениям в старом стиле . Хороший учебник лучше объяснит ситуацию, показав вредную привычку, проблемы, которые она вызывает, лучший подход и почему он лучше и устраняет более ранние проблемы. И не начинайте думать, что любые синтаксические правила или привычки, которые вы изучаете для SQL Server, применимы к любому другому диалекту sql. Есть много различий — не усугубляйте свою борьбу.

Ответ №1:

Нет, вовсе нет. На самом деле ссылка на столбец в SQL всегда должна быть указана — это означает, что в ней должно быть указано, из какой таблицы она взята. Вы можете рассматривать неквалифицированные имена как сокращенные. Механизм SQL делает одолжение, вычисляя таблицу, когда это возможно. И когда столбец находится в нескольких таблицах, он не может его вычислить.

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

 select c.cname
from college c join
     apply a
     on c.cname = a.cname
where c.enrollment > 2000 and a.major = 'CS';
 

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

Кроме того, при этом используется правильный, явный, стандартный, читаемый JOIN синтаксис. Никогда не используйте запятые в FROM предложении, даже если это делают материалы вашего курса / учебника. На самом деле, это само по себе говорит о том, что они устарели (десятилетиями).

Кроме того, используйте псевдонимы таблиц (сокращения), чтобы запросы было проще писать и читать.