Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2016, 20:19   #1
SaheR
 
Регистрация: 16.08.2013
Сообщений: 7
По умолчанию Вывести связанные данные с последней датой (T-SQL) - [решено]

В запросе нужно вывести список всех РеклУстановок, а с ними отобразить даты для последних Заказов по ним, да еще с Заказчиками.
В приложении первая таблица второго изображения показывает примерные данные БД, вторая - требуемый вывод.
Пока что надумал следующий код, но он не верен.
Код:
select РеклУстановки.наименование, расположение, РеклВид.наименование as "вид рекламы", 
	max(заказ.датаНачала) as "дата размещения", max(заказ.датаОкончания) as "дата окончания", 
	Заказчик.наименование as 'последний заказчик'
from РеклУстановки
join РеклВид on реклустановки.реклВид=РеклВид.код
join Заказ on заказ.расположениеКод=РеклУстановки.код
join заказчик on Заказ.заказчикКод=заказчик.код
group by РеклУстановки.код, РеклУстановки.расположение, РеклУстановки.наименование, реклВид.наименование, Заказчик.наименование, Заказ.датаЗаказа 
having Заказ.датаЗаказа = max(Заказ.датаЗаказа)
Вывод этого кода на изображении 1.
Сдается мне, нужен будет left join?
P.S.: установки без заказов тоже желательно вывести.

Решение:
http://www.programmersforum.ru/showp...87&postcount=3
Изображения
Тип файла: png вывод.png (11.6 Кб, 107 просмотров)
Тип файла: png 2016-09-28_22-20-41.png (11.9 Кб, 125 просмотров)

Последний раз редактировалось Вадим Мошев; 12.05.2018 в 19:26. Причина: отметил, что проблема решена
SaheR вне форума Ответить с цитированием
Старый 29.09.2016, 10:05   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
select ............
from ( -- найдем для каждой установки последний заказ
       select установка.код, 
             ( -- и ее ОДИН(top 1) последний (order desc)
               select top 1 заказ.код from заказ
               where заказ.кодустановки =установка.код
               order by заказ.дата DESC ) as  последнийзаказ
       from установка 
     ) as lst --есть список кодоВ!!! установок и кодов!!! НУЖНЫХ заказов

--добавим информацию по ним
join установка .........
left --если есть подозрение о возможном отсутствии  
     join заказ ..........
.....
Код:
select ........
from установка
left join ( --последняя дата по КАЖДОЙ установке 
            select max(заказ.дата окончания), заказ.кодустановки
            from заказ
            group by кодустановки
          ) as последнийзаказ on последнийзаказ.кодустановки  =установка.код
... join ... прочая информация ПО установке и заказу
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.09.2016, 14:11   #3
SaheR
 
Регистрация: 16.08.2013
Сообщений: 7
По умолчанию

А такой вариант корректный?
Код:
select РеклУстановки.наименование, расположение, реклВид.наименование, d.датаНачала, d.датаОкончания, заказчик.наименование
from РеклУстановки
join РеклВид on РеклВид.код = РеклУстановки.реклВид
left join (SELECT 
      ROW_NUMBER() OVER(partition BY расположениеКод ORDER BY датаНачала DESC) RowNum, *
   FROM заказ
   ) as d ON d.расположениеКод=РеклУстановки.код AND d.RowNum = 1
left join Заказчик on заказчикКод=Заказчик.код
group by РеклУстановки.код, расположение, РеклУстановки.наименование, реклвид.наименование, 
	заказчик.наименование, d.датаНачала, d.датаОкончания
Пока не заметил отклонений.
SaheR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
всё тот же SQL ) нужно разом влить данные в 4 таблицы и вывести в одну общую SanekWK БД в Delphi 1 08.09.2016 01:12
Связанные динамические данные sorokan Паскаль, Turbo Pascal, PascalABC.NET 0 10.05.2016 17:38
Вывести сумму чисел, расположенных между последними двумя нулями. Язык Си Yakoff Помощь студентам 6 12.11.2012 15:59
Связанные динамические данные. patisson74 Помощь студентам 4 17.04.2010 22:30
Не отображаются данные связанные с гл. таблицей? zimmion БД в Delphi 11 27.02.2008 18:50