Здравствуйте. Пытаюсь сформировать сложный запрос, но много попыток, поиска решений не дает результата, не достаточно опыта для такого. Прошу помощи. Важно не вносить изменения в структуру таблицы
Имеется 4 таблицы:
1. categories
id---parent_id---name
22---0---Велосипеды
23---0---Самокаты
24---0---Скутеры
2. products
id---name---url---category_id---images---title---sku---variant
1---Велосипед---velosiped---22---0---Вело---123---красный
2---Веломопед---velomoped---22---0---Вело---123---красный
3. newcategories
id---parent_id---name---join_category
1---0---велосипеды партнера---22
2---0---самокаты партнера---23
3---0---электрические велосипеды партнера---22
4. newproducts
id---name---url---new_category_id---video---images---title
1---Новый велосипед---newvelosiped---1---нет---нет---красный новый велосипед
2---Новый веломопед---newvelomoped---1---нет---нет---синий новый веломопед
3---Электровелосипед---electrovel---3---нет---нет---элвелосипед
4---Самокат партнера---samokat---2---нет---нет---самокат
По сути это 2 разных каталога. Т.е. у products category_id относится к таблице categories
У newproducts category_id относится к newcategories
Задача состоит в том, чтобы вывести все товары категории
ID:22 (велосипеды)
и все товары из newproducts, у которых
newcategories (их может быть несколько) имеет join_category как ID категории - 22.
Т.е. если мы берем WHERE category_id = 22, то вывестись должны строки:
id---name---url---category_id---images---title---sku---variant---video---new_category_id
1---Велосипед---velosiped---22---0---Вело---123---красный---нет---нет
2---Веломопед---velomoped---22---0---Вело---123---красный---нет---нет
1---Новый велосипед---newvelosiped---нет---нет---красный новый велосипед---нет---нет---нет---1
1---Новый веломопед---newvelomoped---нет---нет---синий новый веломопед---нет---нет---нет---1
1---Электровелосипед---electrovel---нет---нет---элвелосипед---нет---нет---нет---3
Последний вариант запроса - не работает:
SELECT p.*, np.* FROM products as p
LEFT JOIN newcategories as nc
ON nc.join_category = p.category_id
LEFT JOIN newproducts as np
ON np.new_category_id= nc.id
WHERE p.category_id = 22
order by p.id