Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как получить только первую запись, когда top возвращает несколько? / 7 сообщений из 7, страница 1 из 1
26.08.2008, 13:26
    #35506227
panter_dsd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить только первую запись, когда top возвращает несколько?
Добрый день. Вот такая вот задачка. Работаю через 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
26.08.2008, 13:59
    #35506350
panter_dsd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить только первую запись, когда top возвращает несколько?
Может не совсем понятно? Обрисую ситуацию.
Есть 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
26.08.2008, 14:54
    #35506560
ЮВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить только первую запись, когда top возвращает несколько?
panter_dsd...а вот во второй с одним номерКарточки может быть сразу несколько записей, из которых нужна только последняя.

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

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

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

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

Но, повторяю, некоторые СУБД поддерживают DISTINCT только в основном запросе, а в подзапросах - запрещают.
...
Рейтинг: 0 / 0
26.08.2008, 19:22
    #35507281
panter_dsd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить только первую запись, когда top возвращает несколько?
ЮВ 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
27.08.2008, 11:13
    #35507958
panter_dsd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить только первую запись, когда top возвращает несколько?
Перегнал данные в SQLite и все заработало. Всем спасибо. Тема закрыта.

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


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