question Опубликовано 25 января, 2019 Жалоба Поделиться Опубликовано 25 января, 2019 Нехитрый запрос выводит комментарии, 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 Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 25 января, 2019 Жалоба Поделиться Опубликовано 25 января, 2019 за построение запроса - 2за поставление задачи - 2 советы:1) разобраться в использовании join2) научится правильно ставить вопросы, что бы люди могли давать ответы. То с вашего 1го предложения - получите больше вопросов чем ответов. Из того что написали: вот только если у категории несколько idу категорий не может быть несколько ид. ид всегда 1 выводит последнюю, в то время, как нужно первую (короче, где id минимальный, то есть, 0 или 1) вообще из всего, тяжело что то уловить. лучше бы наисали просто: на странице товара хочу вывести комментарии к похожим товарам по категории. или что вы там хотите... Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 января, 2019 Автор Жалоба Поделиться Опубликовано 25 января, 2019 Это моя невнимательность. Не id, а position, конечно же.Мне нужно выбирать только тот id, где position минимален. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 января, 2019 Автор Жалоба Поделиться Опубликовано 25 января, 2019 Если перед GROUP BY поставить AND pc.position = 0 То выводится нормально. Проблема в том, что в некоторых случаях категории с position = 0 нету. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 января, 2019 Автор Жалоба Поделиться Опубликовано 25 января, 2019 Задача. Вывести последние 14 комментариев с названием товара, который комментировали, его url, первым изображением, url его категории.SQL запрос с этим справляется, но категорию выводит последнюю (с максимальным position), в то время как нужно с минимальным. ASC/DESC LIMIT 1 в данном случае ставить некуда, MIN/MAX также неприменимы. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 января, 2019 Автор Жалоба Поделиться Опубликовано 25 января, 2019 Вставляю перед group by такое AND pc.position = (select MIN(position) FROM s_products_categories where product_id = c.object_id) Всё работает. Но какой-то несуразный запрос получился. Как бы его оптимизировать? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.