Обзор: мне нужно написать собственный вопрос SQL в ExpressionEngine.
У меня есть таблица товаров (exp_channel_titles), которой назначены категории (exp_category_posts). В EE категории сгруппированы (как определено в exp_categories).
Вот что я пытаюсь сделать ...
Когда я показываю определенный продукт (одну строку), я хочу вернуться к таблице продуктов и выбрать случайные «предложения» на основе категорий в определенной группе категорий отображаемого продукта. Наконец, я хочу быть уверен, чтобы исключить отображаемый продукт из предложений.
Мой SQL в порядке, но это довольно прогресс в моей книге. Я здесь в надежде получить помощь.
Пока что я могу получить одну строку и ее категории из интересующей меня группы категорий. Но что теперь?
SELECT *
FROM exp_channel_titles
LEFT JOIN exp_category_posts
ON exp_channel_titles.entry_id = exp_category_posts.entry_id
LEFT JOIN exp_categories
ON exp_category_posts.cat_id = exp_categories.cat_id
WHERE exp_channel_titles.entry_id = "17" AND exp_categories.group_id = "3"
Заранее спасибо за вашу помощь.
- ОБНОВЛЕНИЕ -
Я предполагаю, что это грубая сила, но она работает, почти.
SELECT *
FROM exp_channel_titles my1
LEFT JOIN exp_category_posts my2
ON my1.entry_id = my2.entry_id
LEFT JOIN exp_category_posts my3
ON my1.entry_id = my3.entry_id
LEFT JOIN exp_category_posts my4
ON my1.entry_id = my4.entry_id
WHERE my3.cat_id = "7" AND my2.cat_id = "2" AND my1.entry_id != "17" AND my4.cat_id IN (
SELECT exp_category_posts.cat_id
FROM exp_category_posts
LEFT JOIN exp_categories ON exp_category_posts.cat_id = exp_categories.cat_id
WHERE exp_category_posts.entry_id = '17' AND exp_categories.group_id = '3'
)
Так как мне нужно фильтровать по категориям из 3 разных групп категорий, я делаю 3 ЛЕВЫХ СОЕДИНЕНИЯ. Первые два просто сосредоточены на одной категории (2 = опубликовано, 7 = музыка), третье может вернуть несколько значений из подзапроса, поэтому я использую IN. В подквесте задан параметр entry_id = X (в данном случае 17, который отображает основной / отдельный продукт), какие категории из group_id = 3 (музыка) мне следует предложить?
Последний вопрос: поскольку подзапрос возвратил несколько строк, основной выбор может вернуть дуплексы. Я хочу список уникальных продуктов. Что теперь? Группа по? Сортировать по?
Простите за этот нюби-вопрос, но, честно говоря, Google отстой, когда дело доходит до поиска ответов. Есть множество примеров дерьма, вопросов без ответа и т. Д. Я знаю концепции, но мой синтаксис ржавый. Пожалуйста, помогите брату.
Если кто-нибудь увидит какой-нибудь простой способ оптимизировать вышесказанное, я буду рад выслушать. Еще раз спасибо