@atrian

Как оптимальнее получить выборку из MySQL?

Всем привет!
Помогите составить запрос для создания Представления табличной выборки данных:

Исходные таблицы:
Request (Таблица заявок) - r_id, u_id
ROLink (Таблица связей опция-заявка) - r_id, op_id
ROptions (Таблица опций заявок) - op_id, name, container
UOLink (Таблица связей опция-пользователь) - u_id, op_id
UOptions (Таблица опций пользователей) - op_id, name, container

На выходе нужно получить таблицу типа:
r_id, ROptions.container где name = "город", ROptions.container где name = "филиал", UOptions где name = "ФИО"
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
xShimmy
@xShimmy
SELECT Request.r_id, ROpt_City.container, ROpt_Filial.container, UOptions.container
	FROM Request
	LEFT JOIN ROLink ON (ROLink.r_id = Request.r_id)
	LEFT JOIN ROptions AS ROpt_City ON (ROLink.op_id = ROpt_City.op_id AND ROpt_City.name = 'город')
	LEFT JOIN ROptions AS ROpt_Filial ON (ROLink.op_id = ROpt_Filial.op_id AND ROpt_City.name = 'филиал')
	LEFT JOIN UOLink ON (ROpt_City.op_id = OULink.op_id OR ROpt_Filial.op_id = OULink.op_id)
	LEFT JOIN UOptions ON (UOLink.op_id = UOptions.op_id AND UOptions.name = 'ФИО')

Правда, не проверял.
Да и не претендую на гуру SQL :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы