powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как получить только первую запись, когда top возвращает несколько?
7 сообщений из 7, страница 1 из 1
Как получить только первую запись, когда top возвращает несколько?
    #35506227
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Вот такая вот задачка. Работаю через ODBC. Во вложенном подзапросе нужно выбрать только одно значение, но этого не получается в тех случаях, когда есть несколько записей с одинаковым datgysl.
Код: plaintext
SELECT top  1  f.ropl FROM F5GIL f WHERE (f.nkar LIKE ({fn CONCAT({fn LEFT(a.nkar, 7 )},'__')})) ORDER BY f.datgysl desc
Как быть? Уже 2 дня бьюсь и без эффекта. :(
a.nkar берется из основного запроса. Вот так все было бы нормально
Код: plaintext
SELECT top  1  ropf FROM (SELECT top  1  f.ropl FROM F5GIL f WHERE (f.nkar LIKE ({fn CONCAT({fn LEFT(a.nkar, 7 )},'__')})) ORDER BY f.datgysl desc)
Но в этом случае кричит, что неивестно a.nkar. Как его перетащить в подзапрос в подзапросе?
С уважением.
Пантер.
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35506350
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может не совсем понятно? Обрисую ситуацию.
Есть 2 таблицы:
таблица1:
номерКарточки
площадь

таблица2
номерКарточки
фамилия
дата
площадь

Задача вывести в модель:
1.номерКарточки, 1.площадь, 2.площадь

По первой таблице все нормально, а вот во второй с одним номерКарточки может быть сразу несколько записей, из которых нужна только последняя. Вот мой запрос
SELECT 1.номер карточки, 1. площадь,
(SELECT top 1 2.площадь FROM таблица2 2 WHERE 2.номерКарточки=1.номерКарточки ORDER BY 2.дата DESC)
FROM таблица1 1

С уважением.
Пантер.
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35506560
ЮВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panter_dsd...а вот во второй с одним номерКарточки может быть сразу несколько записей, из которых нужна только последняя.

А опция DISTINCT не помогает?
Или она в подзапросах вашей СУБД запрещена?
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35506571
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЮВ panter_dsd...а вот во второй с одним номерКарточки может быть сразу несколько записей, из которых нужна только последняя.

А опция DISTINCT не помогает?
Или она в подзапросах вашей СУБД запрещена?
А куда его впихнуть?
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35507186
ЮВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panter_dsdА куда уго вставить?

Вы же не говорите, какая у вас СУБД (с такими вопросами лучше обращаться на субфорумы по конкретным СУБД).
Обычно вставляется в начало запроса.

(SELECT DISTINCT top 1 2.площадь FROM таблица2 2 WHERE 2.номерКарточки=1.номерКарточки ORDER BY 2.дата DESC)

Но, повторяю, некоторые СУБД поддерживают DISTINCT только в основном запросе, а в подзапросах - запрещают.
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35507281
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЮВ panter_dsdА куда уго вставить?

Вы же не говорите, какая у вас СУБД (с такими вопросами лучше обращаться на субфорумы по конкретным СУБД).
Обычно вставляется в начало запроса.

(SELECT DISTINCT top 1 2.площадь FROM таблица2 2 WHERE 2.номерКарточки=1.номерКарточки ORDER BY 2.дата DESC)

Но, повторяю, некоторые СУБД поддерживают DISTINCT только в основном запросе, а в подзапросах - запрещают.
Такую конструкцию не позволяет. Это не БД, а всего лишь 2 dbf III. Тем более DISTINCT не прокатит, так как 2.площадь могут быть разные.
Вот пример:
номерКарточки 2.дата 2.площадь
00020100 01.01.2001 50
00020100 01.01.2002 50
00020100 01.01.2002 51
Нужно, чтобы вышла только последняя строка.
...
Рейтинг: 0 / 0
Как получить только первую запись, когда top возвращает несколько?
    #35507958
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перегнал данные в SQLite и все заработало. Всем спасибо. Тема закрыта.

С уважением.
Пантер.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как получить только первую запись, когда top возвращает несколько?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]