_Leonchik_
Новичок
как можно по другому обойти подобный запрос
Подскажите как элегантно избавится от подобного (некрасивого) запроса
2 таблицы:
1 - перечень айтимов ITEMS (id_item, cat_id, name) подчиненных категории
2 - связки между ними TAB_2 (id, id_item_1, id_item_2) - где id_item_1 - это хозяин данной связки.
Необходимо вывести категории со списком входящих в нею Items-ов кот, имеют пару. допустим искомый Items под номером 55
надо найти его пару в TAB_2
2 вар: 2 раза заджойнить таблицу TAB_2 сначало по id_item_1, потом по id_item_2
Но ума не приложу что из них лучше (оптимизированней).
Возможны ли др. пути реализации?
-~{}~ 13.02.07 14:53:
единственное что я пока понимаю, что при (вар. 2) он на первом джойне считывает данные только один раз. На втором уже нет.
вар.1 я так понимаю плох тем, что ему придется считывать всю таблицу. что и показывает EXPLAIN
Что скажете? есть мысли?
Подскажите как элегантно избавится от подобного (некрасивого) запроса
2 таблицы:
1 - перечень айтимов ITEMS (id_item, cat_id, name) подчиненных категории
2 - связки между ними TAB_2 (id, id_item_1, id_item_2) - где id_item_1 - это хозяин данной связки.
Необходимо вывести категории со списком входящих в нею Items-ов кот, имеют пару. допустим искомый Items под номером 55
надо найти его пару в TAB_2
PHP:
SELECT *
FROM `Category` AS Cat
INNER JOIN `ITEMS` AS It USING (cat_id)
LEFT JOIN ` TAB_2` AS T2 ON (It. id_item= T2.id_item_1 AND T2.id_item_2 = 55)
OR (It. id_item = T2.id_item_2 AND T2.id_item_1 = 55)
WHERE Cat.cat_id = 10
Но ума не приложу что из них лучше (оптимизированней).
Возможны ли др. пути реализации?
-~{}~ 13.02.07 14:53:
единственное что я пока понимаю, что при (вар. 2) он на первом джойне считывает данные только один раз. На втором уже нет.
вар.1 я так понимаю плох тем, что ему придется считывать всю таблицу. что и показывает EXPLAIN
Что скажете? есть мысли?