Miguel Altamirano Morales Ответов: 1

Использовать Select distinctrow-это логическое в VB чистая


Всем Привет !!

Кто-нибудь знает, можно ли использовать sql-команду "SELECT DISTINCTROW" в коде VB 2017 ?.

Я пытаюсь разработать запрос, в котором мне нужно выбрать одну уникальную запись из двух таблиц, и это просто не работает. Если я изменю его на "SELECT DISTINCT", он будет работать нормально, но это не то, что мне нужно. Если я сохраняю оператор "SELECT DISTINCTROW", VS 2017 продолжает говорить мне, что есть синтаксическая ошибка.

Запрос изначально находится в коде Access (среда, а не база данных) 2010 VBA, и он отлично работает там, а теперь мне нужно экспортировать его в VB Net. Это подзапрос, который передает информацию другому (второму) запросу более высокого уровня.

Я был бы очень признателен за любую помощь или совет.

Что я уже пробовал:

Поиск в интернете и попытка разработать хранимую процедуру SQL хотя бы для первого запроса, а затем попытка выбрать из нее данные с параметром.

Но SQL manager не принимает SELECT DISTINCTROW statemente; он говорит, что это недопустимый столбец.

1 Ответов

Рейтинг:
7

Maciej Los

DISTINCTROW предикат является специфичным для компонента MS Access database engine. Как говорится в документации MSDN, существует небольшая разница между DISTINCT и DISTINCTROW:

  • DISTINCT - Пропускает записи, содержащие дубликаты данных в выбранных полях.
  • DISTINCTROW - Пропускает данные на основе для целых повторяющихся записей, а не только для повторяющихся полей Например, можно создать запрос, объединяющий таблицы Customers и Orders в поле CustomerID. Таблица Customers не содержит повторяющихся полей CustomerID, но таблица Orders содержит их, поскольку у каждого клиента может быть много заказов. Следующая инструкция SQL показывает, как можно использовать DISTINCTROW для создания списка компаний, имеющих хотя бы один заказ, но без каких-либо подробностей об этих заказах.

Видеть: ALL, DISTINCT, DISTINCTROW, TOP предикаты (Microsoft Access SQL) [Ссылка Разработчика Access 2007][^]

Итак, если вы хотите получить данные таким образом, как вы можете их получить с помощью DISTINCTROW предикат, вы должны создать подзапрос. В зависимости от ситуации вам может потребоваться использовать один из следующих предикатов/методов: TOP, ROW_NUMBER() или LEFT|RIGHT JOIN.

Для получения более подробной информации, пожалуйста, смотрите:
Визуальное представление SQL-соединений[^]
Функции ранжирования (Transact-SQL) | Microsoft Docs[^]


Miguel Altamirano Morales

Еще раз большое спасибо, Мацей; я проверю, что ты предлагаешь.

Сколько сейчас времени в Польше ?

Maciej Los

8:18 вечера
;)

Miguel Altamirano Morales

1:20 вечера здесь;такая разница !!

Maciej Los

Только 7 часов
:смеяться:

Miguel Altamirano Morales

Готовишься ко сну ?

Maciej Los

Ты что, шутишь? Нет, это не так. В основном я собираюсь спать между 11 и 12 часами вечера и просыпаюсь в 5:30 утра.

Miguel Altamirano Morales

Такой здоровый человек. Я всегда ложусь спать около 9 и 10 вечера. (в промежутке между неделями); в выходные я делаю это позже.

Я встаю в 6:30 утра.

Maciej Los

Человек-это существо привычки ;)

Miguel Altamirano Morales

Здравствуйте, Мацей; Добрый день (для вас). Я уже разработал новый запрос с VB-кодом без предиката 'DISTINCTROW', и он работал просто отлично; я не уверен, что это только с этим конкретным случаем, но я собираюсь оставить его таким для дальнейших более сильных тестов, сделанных пользователем; я просто не вижу смысла использовать этот предикат в приложении Access (VBA), и он, кажется, не работает с VB Net; но если необходимо (если что-то не работает), то я могу использовать его только в этом конкретном случае.) Я намерен использовать его, группируя данные с помощью оператора "GROUP BY". На самом деле, я думаю, что оставлю все как есть прямо сейчас.
Такие интересные статьи о визуальных представлениях суставов SQL вы мне прислали; спасибо Вам очень много за вашу помощь еще раз и большое объятие для этой великой нации вашей Польши.

Maciej Los

Спасибо, Мигель. Вы очень добрый человек.
:рукопожатие:
В случае, если вам понадобится помощь в будущем, пожалуйста, не стесняйтесь звонить ;)
Овации,
Мацей