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

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

Ребят ну помогите сделать этот Запрос


tolians ©   (2006-03-09 07:32:00) 

tolians   (06.03.06 04:26)  
Имеется 2 таблицы, первая "наименования"
структура таблицы такая:
Наименование

Вторая "остатки"

Наименование Масса Дата

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

<Цитата>

--------------------------------------------------------------------------------
atruhin ©   (06.03.06 05:07) [1]
Первое ОБЯЗАТЕЛЬНО сделай суррогатное ключевое поле, т.е.
таблица - table1
ID, Наименование
Вторая "остатки" - table2
ID, NAMEREF, Масса, Дата
Второе
Select distinct
Наименование,
(select Масса from table2 t where table1.ID=t.nameref and Дата <= :CDATE)
from table1 join Table 2 on table1.id = table2.nameref

<Цитата>

--------------------------------------------------------------------------------
ЮЮ ©   (06.03.06 05:17) [2]

> А если для этого наименование не встречается записи в таблице
> "остатки" на эту дату, нужно вывести запись на последнюю
> дату.
>

что значит на последнюю?
если есть данные на
01.02.06
03.02.06

Что надо получить, если пользователь ввел
а) 01.01.06
б) 02.02.06
в) 04.02.06
???

БД какая

<Цитата>

--------------------------------------------------------------------------------
atruhin ©   (06.03.06 05:30) [3]
Насколько я понял,
>>Что надо получить, если пользователь ввел
а) 01.01.06 - ничего
б) 02.02.06 - данные на 01.01.06
в) 04.02.06 - данные на 04.02.06
вообще такое применяется например для получения цен на товары, на определенную дату. (правда причем здесь Масса, не знаю:(

<Цитата>

--------------------------------------------------------------------------------
tolians   (06.03.06 11:09) [4]
Если пользователь ввел 03,02,06 то надо вывести все что есть на 03,02,06 а если для этой даты ничего нет для конкретного наименования то надо вывести для этого наименования за 02,02,06 и так далее

--------------------------------------------------------------------------------
tolians   (06.03.06 11:54) [5]
В общем мне надо сделать отчет остатков за период, со столбцами Остаки на начало периода Остатки на конец периода период задается пользователем

Ключевые поля у меня есть, только не ID а №

<Цитата>


Гость111   (2006-03-09 11:38:00) [1]

Хорошо, я закзал книженцию, но мне ее еще не скоро доставят. Только не ругайтесь.  Спасибо всем за помощь.


Плохиш   (2006-03-09 11:34:00) [2]


> Гость111   (09.03.06 11:29) [4]


>  from table2 t2_2

Начни наконец читать книжки.


Sergey13   (2006-03-09 11:33:00) [3]

2 [4] Гость111   (09.03.06 11:29)
> Ну я только начинаю изучать.
За такое изучение и РО не долго получить. 8-)
Книжки не пробовал читать?


Гость111   (2006-03-09 11:29:00) [4]

Боюсь спрашивать, а что такое псевдоним(в sql) и как его создать. Ну я только начинаю изучать.


Desdechado   (2006-03-09 11:24:00) [5]

это псевдоним


Гость111   (2006-03-09 11:20:00) [6]

А что такое t2_2


_RusLAN   (2006-03-09 10:51:00) [7]

примерно так:

select Наименование
from table1 t1
join table2 t2 on t2.№_Наименование = t1.№
 and t2.Дата = (select max(t2_2.Дата)
                from table2 t2_2
                where t2_2.Дата <= :UserData
                  and t2_2.№_Наименование = t2.№_Наименование
               )


Наверх

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