Обзор: Мне нужно написать собственный SQL-запрос в ExpressionEngine.Заявление о самоопределении SQL
У меня есть таблица продуктов (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"
Заранее за вашу помощь.
- UPDATE - Я полагаю, что это грубая сила, но она работает почти.
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. Подзапрос спросил For entry_id = X (в этом случае 17, который является основным/единственным продуктом, отображаемым), какие категории из group_id = 3 (музыка) я должен предлагать?
Последний вопрос, так как подзапрос возвратил несколько строк, основной выбор может возвращать обманы. Я хочу список уникальных продуктов. Что теперь? Группа по? Сортировать по?
Прошу прощения за этот вопрос, но, честно говоря, Google отстой, когда дело доходит до поиска ответов. Там много примеров дерьма, неотвеченные вопросы и т. Д. Я знаю понятия, но мой синтаксис ржавый. Пожалуйста, помогите брату.
Если кто-нибудь видит какой-либо простой способ оптимизировать вышеизложенное, я буду рад слушать. Еще раз спасибо.
Thx. Я отдам это. Моя основная проблема - синтаксис. Я не уверен, как выполнить предварительный выбор запроса. И ...бит выше может быть тем, что мне нужно. Я скоро отправлю отчет. Спасибо. –
Я думаю, что это может сделать это. Но как мне получить подзапрос, чтобы возвращать несколько строк. Вместо ec.group_id =, как я могу сказать, является ли ec.group_id = одним из этих значений в этом подзапросе? Thx снова –
Измените 'ec.group_id = (' to 'ec.group_id IN (' и удалите 'LIMIT 1' в подзапросе ..... см. Обновленный ответ. – Travesty3