Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > Помогите упростить запрос |
Автор: maxipub 6.6.2017, 15:33 | ||||||
Добрый день! Есть таблички:
test_res - таблица записей, для каждой записи указан cat_id (раздел) и res_parent_id (id родительской записи, если ее нет res_parent_id == res_id). Таблица test_cat думаю объяснений не требует. Задача: для указанного res_id выбрать данные из test_res, присоединив к ним test_res.cat_name по соответствующему значению cat_id - это просто, и (а вот тут уже сложнее) test_res.cat_data, у которой test_cat.cat_id == test_res.cat_id для res_id == текущий res_parent_id для текущего res_id. Как-то так. Приведу пример: Нам нужно выбрать данные для res_id = 2, получается: res_id => 2, cat_id => 2, res_parent_id => 2, cat_name => '222', cat_data => 'www' (у строки res_id=2 мы получаем res_parent_id == 2, а для res_id=res_parent_id (res_id=2) значение cat_id == 2) А вот когда берем res_id = 3, получается: res_id => 3, cat_id => 3, res_parent_id => 1, cat_name => '333', cat_data => 'qqq' (а не 'eee', т.к. у строки res_id=3 мы получаем res_parent_id == 1, а для res_id=res_parent_id (res_id==1) значение cat_id == 1) У меня вышел такой не очень приятный запрос:
Ну или так:
Ни тот, ни другой вариант мне не нравится. Можно как-то проще? |
Автор: maxipub 7.6.2017, 13:10 |
Akina, спасибо, оно! Все "вертелось" в уме, но ни как не мог прийти к такому виду. |