У меня есть SQL-запрос, который работает:
SELECT table1.bike_id
FROM
(
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` in (416,11111))
) as table1
RIGHT JOIN (
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` in (5555,779))
) as table2 ON table1.bike_id = table2.bike_id
GROUP BY bike_id
Но мне нужно добавить больше RIGHT JOIN
строк, возможно, 5 или больше. Как правильно сформировать запрос? Я ищу в одной и той же таблице, но объединяю несколько записей в одном запросе, чтобы получить bike_id, который соответствует всем условиям.
Цель этого запроса - получить bike_id
s, который имеет все параметры запроса - велосипед может иметь 20 фильтров, но если пользователь выполняет поиск по 5 и велосипед соответствует им, мы получаем bike_id по этому запросу.
Структура таблицы:
| id | bike_id | bike_category_id |
| 1 | 3 | 416 |
| 2 | 3 | 779 |
| 3 | 3 | 344 |
| 4 | 3 | 332 |
| 5 | 4 | 444 |
| 5 | 5 | 555 |
Мне нужно что-то вроде этого, это неверно:
SELECT table1.bike_id
FROM
(
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` IN (416,11111))
) AS table1
RIGHT JOIN (
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` IN (5555,779))
) AS table2
RIGHT JOIN (
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` IN (5555,344))
) AS table3
RIGHT JOIN (
SELECT bike_id
FROM `bike_filters`
WHERE (`bike_category_id` IN (5555,332))
) AS table4
GROUP BY bike_id