Как этот запрос будет работать в SQL Server (из access)?

#sql #sql-server #database #ms-access

#sql #sql-server #База данных #ms-access

Вопрос:

Я только недавно перевел нас из базы данных прямого доступа в интерфейс Access и серверную часть SQL Server со связанной таблицей. Мы переходим с Access 2007 на SQL Server 17 (в настоящее время Express, но вскоре станет стандартным).

У меня есть несколько запросов «Выбрать запрос (реплицированный)», которые мы использовали в Access, которые я хочу преобразовать для прохождения через запросы в новом интерфейсе связанного доступа.

Однако я не уверен, почему это не работает aleady. Это представление SQL в Access (имя таблицы было ADDRESSES )

 SELECT ADDRESSES.STEXT,
       ADDRESSES.COMPANY,
       ADDRESSES.ADDRESS,
       ADDRESSES.CITY,
       ADDRESSES.STATE,
       ADDRESSES.[MAIL-DATE],
       ADDRESSES.ORDER,
       ADDRESSES.[IN-DATE],
       ADDRESSES.[CHK-DATE],
       ADDRESSES.VERIFIER,
       ADDRESSES.DNC
FROM ADDRESSES
WHERE(((ADDRESSES.STEXT) Like "schlawoffice*"));
  

Теперь в SQL имя таблицы dbo.MSTR-SENT вместо ADDRESSES . Как бы мне сделать этот SQL Server совместимым для нового сквозного запроса? Просто меняем имя таблицы?

Спасибо

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

1. Почему бы вам не попробовать это? Что произойдет, если вы измените ADDRESSES на dbo.MSTR-SENT ? Вы пробовали это?

2. Также синтаксис для LIKE такой: Like ‘schlawoffice%’, см. learn.microsoft.com/en-us/sql/t-sql/language-elements /…

3. Я действительно пробовал это, и вы правы насчет синтаксиса, который был оплошностью.

4. Совершенно не по теме, но такого понятия, как «SQL Server 17», не существует. Выпуск, который упакован как SQL Server 2017, — это SQL Server версии 14. В 1998 году Microsoft выпустила последнюю номерную версию SQL Server 7. После этого они начали называть выпуски с указанием года их выхода, поэтому версия 8 SQL Server известна как SQL Server 2000. Сумасшедший? ДА. Но в SSMS вы можете увидеть числовую версию сразу после имени сервера в обозревателе объектов. Вот неофициальный официальный список сборки

5. Что ж, это все еще действительно интересно! Пока существует корреляция, я думаю, это не имеет большого значения.

Ответ №1:

Вы должны привыкнуть использовать псевдонимы. Это может превратить текстовую стену во что-то, что легко читается. Также вам следует избегать использования зарезервированных слов в качестве имен столбцов или объектов. И последнее, но не менее важное, я бы предложил не использовать специальные символы в именах таблиц. Используйте буквенные символы (и только цифры, если вам абсолютно необходимо их использовать, чего почти никогда не должно быть).

Ваш запрос в sql server будет выглядеть следующим образом.

 SELECT s.STEXT
    , s.COMPANY
    , s.[ADDRESS]
    , s.CITY
    , s.[STATE]
    , s.[MAIL-DATE]
    , s.[ORDER]
    , s.[IN-DATE]
    , s.[CHK-DATE]
    , s.VERIFIER
    , s.DNC 
FROM dbo.[MSTR-SENT] s 
WHERE s.STEXT Like 'schlawoffice%'
  

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

1. Спасибо, я понимаю. Я не был по-настоящему знаком с псевдонимами, это действительно интересно. Мне нужно будет прочитать об этом подробнее. В исходном запросе Access набор данных доступен для редактирования и может быть добавлена новая строка, хотя в сквозном запросе набор записей не редактируется. Я предполагаю, что мне пришлось бы использовать другой подход?

2. Да, вам нужно будет выполнить инструкцию update для обновления данных.

3. Большое вам спасибо! Вы оказали большую помощь