- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть таблица отзывов про организации, про них юзеры пишут отзывы и голосуют, у каждого отзыва сохраняется кол-во звезд которые юзер поставил фирме от 1 до 5.
Хочу запросом вывести кол-во отзывов - положительных, отрицательных и нейтральных. Ничего умнее чем дважды сджойнить эту же таблицу не придумал (может есть разумнее ход?)
В итоге получился такой запрос
Но даже он выводит три колонки с непонятными цифрами (не теми что должны)
К примеру если посмотреть только плохие отзывы то запрос отрабатывает правильно
Где я ошибаюсь в первом запросе?
P.S. я должен получить 60 / 1 / 199
а получаю 11940/ 11940/ 11940
т.е. 60*99*1 = 11940
Получилось так
Первый запрос у Вас просто абсурден, связываете без связей, получаете групповые результаты без группировки, хотите получить результаты из t2,t3, но с помощью where обрезаете их по t1 (join условия != where). По нагрузке при даже среднем количестве данных будет неадекватно.
Если скорость не особо принципиальна, то можно за одну строку
select sum(if(rate=2,1,0)) rate2, sum(if(rate=3,1,0)) rate3 , object_id from comments_items where object_group='com_firm' and object_id=1698 group by object_id
получите нечто вроде
60, 199, 1698
Если принципиальна и висят индексе соответствующие, то можно в несколько строк
select count(*), rate, object_id from comments_items where object_group='com_firm' and object_id=1698 group by object_id, rate
получите нечто вроде
60 2 1698
199 1 1698