Drooid
Новичок
Поиск по связующим таблицам
Есть табличка с выставками. Каждая выставка может принадлежать к нескольким категориям. Кроме того, каждая выставка может иметь несколько типов.
В таблицах это выглядить так
exhibits
e_id
e_name
categories
c_id
c_name
types
t_id
t_name
rel_categories
r_exhibit_id
r_category_id
rel_types
r_exhibit_id
r_category_id
Далее собственно проблема: нужно сделать поиск по категориям и типам. Как лучше сделать?
Я вижу два способа..
1. Сначала вытащить в массив двумя sql запросами id тех выставок которые, подходят. и потом в результирующем запросе использовать WHERE e_id IN (".implode(",", $ids).")
2. Второй способ. Сделать что-то вроде
Как правильнее?
Есть табличка с выставками. Каждая выставка может принадлежать к нескольким категориям. Кроме того, каждая выставка может иметь несколько типов.
В таблицах это выглядить так
exhibits
e_id
e_name
categories
c_id
c_name
types
t_id
t_name
rel_categories
r_exhibit_id
r_category_id
rel_types
r_exhibit_id
r_category_id
Далее собственно проблема: нужно сделать поиск по категориям и типам. Как лучше сделать?
Я вижу два способа..
1. Сначала вытащить в массив двумя sql запросами id тех выставок которые, подходят. и потом в результирующем запросе использовать WHERE e_id IN (".implode(",", $ids).")
2. Второй способ. Сделать что-то вроде
PHP:
SELECT DISTINCT
e_id,
e_name
FROM
exhibits
LEFT JOIN
rel_categories
ON
(rel_categories.r_exhibit_id = exhibits.e_id)
LEFT JOIN
rel_types
ON
(rel_types.r_exhibit_id = exhibits.e_id)
WHERE
rel_categories.r_category_id IN (".$categories.")
AND rel_types.r_type_id IN (".$type.")