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

Откуда:
Сообщений: 3
Здравствуйте! Помогите, пожалуйста, правильно составить MySQL запрос на выборку со следующим условием:

Есть три таблицы:
1. TStructure (FID:INT(11), FIDparent:INT(11), FOtdelName:VARCHAR(32)) – хранит дерево структуры предприятия (FID-FIDparent),

2. TUsers (FID:INT(11), FIDstructure:INT(11), FUserName:VARCHAR(64)) – хранит пользователей, принадлежащих какому либо отделу предприятия методом TUsers.FIDstructure=TStructure.FID,

3. TReports (FID:INT(11), FIDStructrueOtdel:INT(11), FReport:VARCHAR(255)) – таблица с отчётами, принадлежащими какому либо отделу предприятия методом TReports.FIDStructrueOtdel=TStructure.FID.

TUsers.FIDstructure заранее известен. TReports.FIDStructrueOtdel может совпадать, а может и не совпадать с TUsers.FIDstructure, т.к. первый может указывать, в том числе, и на дочерние отделы, к которым пользователь не принадлежит на прямую, а только через родительское отношение в дереве TStructure. Составьте или помогите составить SELECT запрос так, чтобы получить все записи из таблицы TReports, принадлежащие и дочерние отделу, к которому относится пользователь (TUsers.FIDstructure).

P.S.: Не судите строго, первый раз прошу так в наглую, но заработался до того, что совсем отупел, думать больше не могу, еле пост написал, не спал 35 часов и времени отоспаться не дают. Помогите, пожалуйста, составьте для меня этот запрос.
2 апр 16, 11:19    [19008270]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить MySQL запрос на выборку из дерева по трём таблицам.  [new]
CrazyMax
Member

Откуда:
Сообщений: 3
Ах, да. Забыл упомянуть, что MySQL 5.6.14, как и почти везде, наверное.
2 апр 16, 11:38    [19008299]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить MySQL запрос на выборку из дерева по трём таблицам.  [new]
Громыхатель
Guest
CrazyMax, если правильно понимаю, то ваша задача аналогична этой:

Все связи с одной таблице
Только в вашем случае связь однонаправленная.
2 апр 16, 16:08    [19008870]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить MySQL запрос на выборку из дерева по трём таблицам.  [new]
CrazyMax
Member

Откуда:
Сообщений: 3
Нет.
3 апр 16, 00:05    [19010095]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить MySQL запрос на выборку из дерева по трём таблицам.  [new]
bochkov
Member

Откуда: Камчатка
Сообщений: 4156
как то так
SELECT * FROM TReports r
JOIN (SELECT @index:=INSTR(@a,',') as coma_index,
@id:=SUBSTRING_INDEX(@a, ',', 1)  as id,
@a:=SUBSTRING(@a,IF(@index,@index+1,0)),
@a:=CONCAT_WS(IF(LENGTH(@a)>0,',',''),@a,(SELECT group_concat(FID) FROM TStructure WHERE FIDparent=@id)) as array
FROM TStructure,(SELECT @a:=${FIDstructure_Param}) as init
WHERE LENGTH(@a)>0) as m ON r.FIDStructrueOtdel=m.id
3 апр 16, 13:57    [19010916]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить