#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
предложении, даже если это делают материалы вашего курса / учебника. На самом деле, это само по себе говорит о том, что они устарели (десятилетиями).
Кроме того, используйте псевдонимы таблиц (сокращения), чтобы запросы было проще писать и читать.