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

Откуда: Санкт-Петербург
Сообщений: 520
Добрый день!
Имеются несколько таблиц:
1. Главная таблица
[request](
	[request_number] [int] IDENTITY(1,1) NOT NULL,
	[id_request] [uniqueidentifier] NOT NULL,
	[id_owner] [uniqueidentifier] NOT NULL,
	[request_title] [varchar](50) NOT NULL,
	[request_description] [varchar](max) NOT NULL,
	[request_status] [int] NOT NULL,
	[id_priority] [int] NOT NULL,
	[id_category_l1] [uniqueidentifier] NOT NULL,
	[id_category_l2] [uniqueidentifier] NOT NULL,
	[id_category_l3] [uniqueidentifier] NULL,
	[id_category_l4] [uniqueidentifier] NULL,
	[date_created] [datetime] NOT NULL,
	[id_shop] [uniqueidentifier] NULL


2. Иные таблицы
Например,
[request_category_level_1](
	[id_category_l1] [uniqueidentifier] NOT NULL,
	[category_name_l1] [varchar](40) NOT NULL,
	[id_shop] [uniqueidentifier] NOT NULL


[request_priority](
	[id_priority] [int] NOT NULL,
	[priority_name] [varchar](40) NOT NULL,
	[priority_time] [int] NOT NULL


[user_hd](
	[id_user] [uniqueidentifier] NOT NULL,
	[user_login] [varchar](20) NOT NULL,
	[first_name] [varchar](20) NOT NULL,
	[last_name] [varchar](20) NULL


3. Проблемная таблица
[request_ForDecision](
	[id_category] [uniqueidentifier] NULL, ИД категории равный ИД категории из таблицы request_category_level_1..N
	[id_responsible] [uniqueidentifier] NULL  ИД Ответственного пользователя  


Выполняю запрос типа

SELECT 
request.request_number, 
request.id_request,
user_hd.user_login, 
(user_hd.first_name+' '+user_hd.last_name) as FIO,
request.request_title, request.request_description,
request.request_status,
request_status.status_name,
request.id_priority,
request_category_level_1.category_name_l1,
request.id_category_l1,
request_category_level_2.category_name_l2,
request.id_category_l2,
request_category_level_3.category_name_l3,
request.id_category_l3,
request_category_level_4.category_name_l4,
request.id_category_l4,
request_priority.priority_name 

FROM  
request 
INNER JOIN request_priority ON request.id_priority=request_priority.id_priority 
INNER JOIN user_hd on request.id_owner=user_hd.id_user 
INNER JOIN request_status on request.request_status=request_status.id_status 
INNER JOIN request_category_level_1  ON 
request.id_category_l1=request_category_level_1.id_category_l1 
INNER JOIN request_category_level_2  ON 
request.id_category_l2=request_category_level_2.id_category_l2 
LEFT JOIN request_category_level_3 ON  
request.id_category_l3=request_category_level_3.id_category_l3 
LEFT JOIN request_category_level_4 ON 
request.id_category_l4=request_category_level_4.id_category_l4 

where  
request.id_owner='{A3584081-1257-4F07-9EA8-2A333EB640A0} ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ' and 
request.request_status=2

Все отрабатывает на ура.

Но мне требуется переписать запрос так, чтобы текущий пользователь мог увидеть записи не только где он находится в поле
request.id_owner
, но и где хоть одно из полей
request.id_category_l1..N
совпадает с полем
request_ForDecision.id_category
и
request_ForDecision.id_responsible='{A3584081-1257-4F07-9EA8-2A333EB640A0} ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ'


Помогите, пожалуйста, создать такой запрос.

Спасибо.

Никогда не бойся делать то, что не умеешь.
Помни, профессионалы построили Титаник, а Ковчег любители.
19 ноя 13, 08:20    [15152172]     Ответить | Цитировать Сообщить модератору
 Re: Создать сложный запрос со связкой нескольких таблиц  [new]
Гость333
Member

Откуда:
Сообщений: 3683
WHERE
   request.id_owner='{A3584081-1257-4F07-9EA8-2A333EB640A0} ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ'
   OR
   (
      request_ForDecision.id_responsible='{A3584081-1257-4F07-9EA8-2A333EB640A0} ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ'
      AND
      request_ForDecision.id_category IN (request.id_category_l1, request.id_category_l2, request.id_category_l3, request.id_category_l4)
   )

И используйте алиасы (псевдонимы) таблиц, код будет чище и понятнее.
19 ноя 13, 08:47    [15152246]     Ответить | Цитировать Сообщить модератору
 Re: Создать сложный запрос со связкой нескольких таблиц  [new]
Kast2K
Member

Откуда: Санкт-Петербург
Сообщений: 520
Гость333,

Огромное спасибо! Это именно то, что было нужно.

Спасибо за совет про алиасы.
19 ноя 13, 09:00    [15152298]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить