![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос
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]про СУБД например рассказать?