Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Нехитрый запрос выводит комментарии, url товара, url и id категории, всё правильно, вот только если у категории несколько id, выводит последнюю, в то время, как нужно первую (короче, где id минимальный, то есть, 0 или 1).

 

SELECT c.id, c.object_id, c.ip, c.name, c.text, c.type, c.date, c.approved, i.filename as image , p.url, p.name product, pc.category_id, cat.url category_url 

FROM s_comments c 

INNER JOIN s_products p ON c.object_id = p.id, s_images i, s_products_categories pc, s_categories cat 

WHERE i.product_id = c.object_id AND c.type='product' AND (c.approved=1 ) AND pc.product_id = p.id AND cat.id = pc.category_id 

GROUP BY c.id 

ORDER BY id DESC LIMIT 0, 14

 

 

 

Ссылка на сообщение
Поделиться на другие сайты

за построение запроса - 2

за поставление задачи - 2

 

советы:

1) разобраться в использовании join

2) научится правильно ставить вопросы, что бы люди могли давать ответы. То с вашего 1го предложения - получите больше вопросов чем ответов.  Из того что написали:

 

 

вот только если у категории несколько id

у категорий не может быть несколько ид. ид всегда 1

 

 

выводит последнюю, в то время, как нужно первую (короче, где id минимальный, то есть, 0 или 1)

 

вообще из всего, тяжело что то уловить. лучше бы наисали просто:

 

на странице товара хочу вывести комментарии к похожим товарам по категории. или что вы там хотите...

Ссылка на сообщение
Поделиться на другие сайты

Это моя невнимательность. Не id, а position, конечно же.

Мне нужно выбирать только тот id, где position минимален.

Ссылка на сообщение
Поделиться на другие сайты

Если перед GROUP BY поставить 

 

AND pc.position = 0
 

То выводится нормально. Проблема в том, что в некоторых случаях категории с position = 0 нету.

Ссылка на сообщение
Поделиться на другие сайты

Задача. Вывести последние 14 комментариев с названием товара, который комментировали, его url, первым изображением, url его категории.

SQL запрос с этим справляется, но категорию выводит последнюю (с максимальным position), в то время как нужно с минимальным. 

ASC/DESC LIMIT 1 в данном случае ставить некуда, MIN/MAX также неприменимы.

Ссылка на сообщение
Поделиться на другие сайты

Вставляю перед group by такое

 

AND pc.position = (select MIN(position) FROM s_products_categories where product_id = c.object_id)

 

Всё работает. Но какой-то несуразный запрос получился. Как бы его оптимизировать?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...