Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Как выбрать поле с самой новой датой   Найти похожие ветки 

 
yk ©   (2005-05-18 13:39) [0]

Уважаемые Мастера!
Ситуация такая:
В одной таблице
табл1(
ИДтабл1,
ИдТабл2,
цена
)
В другой таблице
Табл2(
ИДтабл2,
Дата
)

Мне нужно выбрать из Табл1 самую новую цену (дата это цены находится в таблице2).
Но я не знаю как поставить условие для выбора самой последней даты

Пример упрощенный.


 
Johnmen ©   (2005-05-18 13:44) [1]

Самая последняя - это максимальная, т.е MAX(Дата)
Используй вложенный запрос для определения макса...


 
yk ©   (2005-05-18 14:09) [2]

вроде получилось.
Но похоже на масло масляное

select   идтабл1,цена,идтабл2,дата
from табл1, табл2
where
табл1.ИДтабл2=табл2.ИДтабл2
and
табл2.Дата=(select max(дата)
                 from табл1, табл2
                 where
                 табл1.ИДтабл2=табл2.ИДтабл2
                 )


Может можно это попроще сделать,
ведь выбор последней цены - это верхушка айсберга :(


 
Sergey13 ©   (2005-05-18 14:32) [3]

Какая то структура не очень понятная. Что за вторая табла, зачем она? ИДшник и дата - это к чему? Вроде логичнее цену с датой хранить. Нет?

>Может можно это попроще сделать,
>ведь выбор последней цены - это верхушка айсберга :(
Если это надо делать постоянно или очень часто, то почему бы не провести маленькую денормализацию и хранить мах дату там где она нужна. Обновлять по тригеру на исходной таблице.


 
Johnmen ©   (2005-05-18 15:20) [4]

Зачем в подзапросе обращаться к двум таблицам ?


 
evvcom ©   (2005-05-18 15:54) [5]

Судя по вопросу, связь таблиц 1 к 1. Если так, то действительно лучше эти таблицы соединить. В противном случае вопрос надо ставить понятнее.


 
yk ©   (2005-05-18 16:04) [6]

извините, действительно непонятно написала.

Таблица 2 это
Поставка товара за определённое число
В эту поставки может входить много изделий (Таблица 1),
у каждого из них своя цена.

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

Если изделия такого вообще нет в поставках, то цену берем как 0


 
Sergey13 ©   (2005-05-18 16:35) [7]

2[6] yk ©   (18.05.05 16:04)
>извините, действительно непонятно написала.
Ты и сейчас не много прояснила. 8-) Для меня по крайней мере.
У тебя или связи какие то странные, или ты про них не все написала.

Я бы наверное попробовал сделать вьюшку по
select   идтабл1,цена,идтабл2,дата
from табл1, табл2
where
табл1.ИДтабл2=табл2.ИДтабл2

А потом уже ее соединял с тем "набором изделий" который нужен.


 
yk ©   (2005-05-19 14:09) [8]

> Ты и сейчас не много прояснила. 8-)

Попробую поподробнее :)
У меня есть таблица
товаров
Tovar(
idTovar,
name
.....
)

есть таблица поставок
Postavka(
idPostavka
Date  - дата поставки
....
)

В эту поставку входят как-бы поставляемые единицы:
PostEd(
idPostEd
idPostavka - ИД поставки, в которую входит эта единица
idTovar  - ИД поставляемого товара
price   - цена единицы товара
.....
)

Дано следующее:
1. Берем некоторый произвольный набор товаров
(напимер для того чтобы посмотреть сколько будет стоить
вся эта куча товара)
2. Для каждого товара надо
взять цену его из самой последней поставки
(если такие товары не поставлялись, то 0)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
1-1117797095
San Sanich
2005-06-03 15:11
2005.06.29
Текст разного цвета


3-1116836022
Cat
2005-05-23 12:13
2005.06.29
Есть ли оператор case в хранимых процедурах?


14-1117366399
sofs
2005-05-29 15:33
2005.06.29
JBuilder


1-1118217103
TAN_K
2005-06-08 11:51
2005.06.29
PageControl и PageControl


9-1111516682
Sphinx
2005-03-22 21:38
2005.06.29
Плагин к 3DS Max 7 и .X файлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский