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

Откуда:
Сообщений: 22
Помогите пожалуйста составить запрос. Есть две таблицы (Request, Req_mov) в Request у каждой строки уникальный ИД связанный со второй таблицей(Req_mov), но во второй таблице эти значения не уникальны и могут повторяться множество раз. Как сделать запрос таким образом что бы для каждого уникального ИД выводилась лишь одна строка с данными из(Req_mov). Нужна именно последняя запись для ИД. На данный момент выводит все строки из второй таблицы.
SELECT Request.id, u2.Name AS Пользователь, Type_tb.TypeName AS Тип, Request.Comment AS Комментарий, Priority.PriorityName AS Приоритет, Status_tb.StatusName AS Статус, u1.Name AS Специалист, Request.Room AS Кабинет, Request.Phone AS Телефон FROM Req_mov INNER JOIN Request ON Req_mov.id = Request.id INNER JOIN Priority ON Req_mov.id_priority = Priority.id_priority INNER JOIN Status_tb ON Req_mov.id_status = Status_tb.id_status INNER JOIN Type_tb ON Req_mov.id_type = Type_tb.id_type INNER JOIN Users AS u1 ON Req_mov.id_spec = u1.id_user INNER JOIN Users AS u2 ON Request.id_user = u2.id_user WHERE u1.Name = '" +Program.UserInfo.UserName+ "'"
4 май 18, 09:58    [21386469]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Diessolve,

Inner join замени на Cross apply (Select top 1 * From Req_mov Where Request.ID = Req_mov.ID Order by [Порядок сортировки] Desc)
4 май 18, 10:24    [21386560]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Diessolve
Member

Откуда:
Сообщений: 22
Kopelly,

Что то у меня ничего не получается :с
4 май 18, 10:52    [21386674]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Diessolve
Kopelly,
Что то у меня ничего не получается :с

А это потому что у тебя весь запрос в одну строчку.
Приведу аналогию.

Не секрет что очень сложно прочитать правильно предложение с более чем сотней слов и при этом не содержащего ни одного знака препинания хотя и без орфографических ошибок и уж тем более невозможно читая такой текст уловить уловить смысл с первого прочтения но как говорится сам себе злобный буратино точка
4 май 18, 11:00    [21386702]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Diessolve,

SELECT 
Request.id, 
u2.Name AS Пользователь, 
Type_tb.TypeName AS Тип, 
Request.Comment AS Комментарий, 
Priority.PriorityName AS Приоритет, 
Status_tb.StatusName AS Статус, 
u1.Name AS Специалист, 
Request.Room AS Кабинет, 
Request.Phone AS Телефон 
FROM Request 
cross apply (Select top 1 * From Req_mov Where Req_mov.id = Request.id /*Order by  [Добавит критерий последнего и раскомментировать] */) Req_mov
INNER JOIN Priority ON Req_mov.id_priority = Priority.id_priority 
INNER JOIN Status_tb ON Req_mov.id_status = Status_tb.id_status 
INNER JOIN Type_tb ON Req_mov.id_type = Type_tb.id_type 
INNER JOIN Users AS u1 ON Req_mov.id_spec = u1.id_user 
INNER JOIN Users AS u2 ON Request.id_user = u2.id_user 
WHERE u1.Name = '" +Program.UserInfo.UserName+ "'"
4 май 18, 11:12    [21386727]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Diessolve
Member

Откуда:
Сообщений: 22
Kopelly,

Спасибо, но выводит самую раннюю строку, а не самую последнюю.
4 май 18, 11:22    [21386754]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
Diessolve
Kopelly,

Спасибо, но выводит самую раннюю строку, а не самую последнюю.


Чукча не читатель?

/*Order by  [Добавит критерий последнего и раскомментировать] */
4 май 18, 11:25    [21386764]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Diessolve
Member

Откуда:
Сообщений: 22
Владислав Колосов,

Чукча совсем не опытен в SQL
Тут помог гугл - Order by desc
4 май 18, 11:27    [21386773]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Diessolve
Member

Откуда:
Сообщений: 22
Kopelly,

Спасибо добрый человек за помощь :3
4 май 18, 11:29    [21386782]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить