Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Одним запросом  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Туплю. Какой вариант одним запросом получить результат из двух таблиц?
T1 поля Num char(10), name varchar(50), dateIn datetime
T2 поля Num char(10), dateOut datetime

Query T2.Num, dateOut, name

Я решаю данную проблему так
SELECT T2.Num, T2.dateOut, fnName(T2.Num, T2.dateOut)
,где
fnName скалярная функция с параметрами и текстом запроса

SELECT TOP (1) name FROM T1 WHERE Num=@Num and DateIn<=@Dt ORDER BY DateIn DESC

Ну очень интересно.
7 сен 12, 13:44    [13129657]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Есть такой оператор - JOIN
Позволяет в одном запросе соединить до 255 таблиц\
А еще есть функции ранжирования

Сообщение было отредактировано: 7 сен 12, 13:48
7 сен 12, 13:47    [13129693]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Glory, спасибо

T2.dateOut и T1.dateIn не совпадают

Да вот join не знаю как здесь применить , а с ранжированием дело не имел, надо почитать.

Идея запроса понятна? Обьект с номером Num Меняет свое имя Name на момент Т1.dateIn.
Какое имя имел объект на моменты Т2.dateOut?
7 сен 12, 14:06    [13129915]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Ранжирование почитал, не знаю как применить в данном случае.
Подзапросами не придумал конструкцию.
По логике, если пользоваться join, то какая связка T2.Num=T1.Num, а вот с датами тугодумим.
Glory, это просто намек, а скажи решение есть?
7 сен 12, 14:56    [13130397]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
SELECT 
   T2.Num
  ,T2.dateOut
  ,(SELECT TOP 1 [Name] FROM T1 WHERE T1.Num=T2.Num and T1.DateIn<=T2.dateOut ORDER BY T1.DateIn DESC) AS [Name]
FROM T2
7 сен 12, 15:02    [13130441]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
как вариант делать через аутер эпплай, но разницы не будет.
7 сен 12, 15:03    [13130446]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вопрос вида, как выбрать одну запись каждого вида из истории, задают каждый день
Вот сегодня уже, например, задавали
https://www.sql.ru/forum/actualthread.aspx?tid=967815
7 сен 12, 15:21    [13130647]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Никогда в конструкции запросов подзапрос не использовал в качестве одного из полей запроса.
Век живи и век учись, ...
Ловко, Bator, Спасибо.
7 сен 12, 15:22    [13130655]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить