Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос


Страницы:   1 2

Ann ©   (2003-04-24 09:23:00) 

Доброго дня!
Подскажите пожалуйста..никак не могу правильно написать такой запрос
имеется одна таблица, в ней есть номер артикула и наименование и вторая таблица, в ней каждому номеру артикула может соответствовать несколько записей с датой. Нужно чтобы запрос выдавал строку в номером артикула, наименованием и МАКСИМАЛЬНОЙ датой..


Ann   (2003-04-24 11:23:00) [1]

Согласна :)


Zacho   (2003-04-24 11:20:00) [2]


> Ann © (24.04.03 11:15)

Проще (и работать быстрее будет) сделать ПК (ART_ID,RDATA)


Ann   (2003-04-24 11:15:00) [3]

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


Zacho   (2003-04-24 11:11:00) [4]


> Ann © (24.04.03 11:08)

Рад что получилось :-) , но подумай все-же над Zacho © (24.04.03 11:09)


Zacho   (2003-04-24 11:09:00) [5]

И все-таки подозреваю, что в таблице SPRARTR у тебя должен быть первичный ключ (ART_ID,RDATA). Иначе, действительно, какуюзапись ты будешь выбирать, если для одного ART_ID окажется несколько записей с одинаковым RDATA ?


Ann   (2003-04-24 11:08:00) [6]

уря!!! получилось!! :)))
спасибо тебе большущее!!
там просто в твоем запросе была объявлена таблица sprart как s, а не sprartp

спасиб, спасиб!!! :)


Zacho   (2003-04-24 11:03:00) [7]


> Ann © (24.04.03 10:57)

Ну проверь, что вернет SELECT MAX(S.RDATA) FROM SPRATR S WHERE S.ART_ID=SPR.ART_ID с SPR.ART_ID равным тому ID для которого выбирается три записи вместо одной.


Ann   (2003-04-24 10:57:00) [8]

зря не веришь, там всего три записи, за1,23 и 24 чило, так что точно нет одинаковых... эх..


Zacho   (2003-04-24 10:54:00) [9]


> Ann © (24.04.03 10:52)
> с одинаковыми RDATA и ART_ID записей нет

Не верю. Тогда бы запрос правильно отрабатывал. И, все-таки, а если есть ? Какая тогда запись тебе нужна ?


Ann   (2003-04-24 10:52:00) [10]

с одинаковыми RDATA и ART_ID записей нет, первичные ключи по art_id


Zacho   (2003-04-24 10:48:00) [11]


> Ann © (24.04.03 10:46)

Что-то ты не договариваешь. Какие первичные ключи у таблиц ? Нет ли во второй таблице записей с одинаковыми RDATA и ART_ID ? Если есть, то какая именно из этих записей тебе нужна ?


Ann   (2003-04-24 10:46:00) [12]

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


Zacho   (2003-04-24 10:39:00) [13]


> Ann © (24.04.03 10:37)

Подробнее... Вместо какой одной ? Что все-таки получить надо ? Приведи пример с конретными данными.


Ann   (2003-04-24 10:37:00) [14]

попробывала.. выдает 3 записи вместо одной :(


Igor   (2003-04-24 10:35:00) [15]

А то что Zacho предложил не удовлетворяет? Почему?


Zacho   (2003-04-24 10:35:00) [16]


> Ann © (24.04.03 10:30)

Смотри Zacho © (24.04.03 10:26)


Ann   (2003-04-24 10:30:00) [17]

структура первой таблицы
ART_ID,
NAME,
DELETE_PR,
GROUP_ID
структура второй таблицы
ART_ID,
GOST,
EAN13,
DELETE_PR,
RDATA
нужно получить в результате запроса строку содержащую из 1 таб. art_id,name из второй запись соответствующая певой по art_id, (нужны все поля из 2 таб), записи 1 таб может соответсвовать много записей во 2, нужно взять только 1, с максимальной датой




Zacho   (2003-04-24 10:26:00) [18]


> Ann © (24.04.03 10:20)

Если я правильно понял, то так:
SELECT
SPR.ART_ID,
SPR.NAME,
SPR_A.RDATA,
SPR_A.GOST,
SPR_A.EAN13,
SPR_A.DELETE_PR
FROM
SPRART SPR,
SPRARTP SPR_A
where (SPR_A.ART_ID=SPR.ART_ID) AND SPR_A.RDATA=(SELECT MAX(S.RDATA) FROM SPRATR S WHERE S.ART_ID=SPR.ART_ID)


Zacho   (2003-04-24 10:22:00) [19]


> Ann © (24.04.03 10:12)

Разберись как работает агрегирование и группировка, и если сама не сможешь написать нужный тебе запрос, то напиши подробно о структуре данных и какой результат ты хочешь получить.


Соловьев   (2003-04-24 10:21:00) [20]

про СУБД например рассказать?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо