Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169

Не могу ни как реализовать mysql запрос с двумя условиями и с двумя JOIN

27.06.2022, 13:30. Показов 510. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте! Задавал подобный вопрос на другом форуме, пока что за неделю ни кто не помог.
Возможно я слишком переборщил в оформление темы.

Вот что я хочу сделать. (Стандартные отзывы на сайте к продукту)
Есть продукты -> у продуктов есть отзывы -> у отзывов есть оценки -> и у каждой оценки привязан пользователь -> какой либо отзыв помечается (например выделенным зеленым или красным) зависимости какую оценку поставил пользователь -> если пользователь не зарегестрирован,или он не поставил оценку, не выделять отзыв ни каким цветом.

Ниже скрин базы данных. Он скромный, и без таблицы users.
В таблице users все просто, столбцы: id_user, name - все

Еще в будущем (я уже знаю как) хочу выводить количество оценок к отзыву. Но пока что не делаю разбираясь с этой проблемой.
Вот как я пробую вывести комментарии: (PDO)
MySQL
1
2
3
4
5
$sth = $this->db->prepare(SELECT comments.id_comment, name_product, IFNULL(grade_comment.grade, null) as this_grade
        FROM comments
        LEFT JOIN product ON product.id_product = comments.id_product
        LEFT JOIN grade_comment ON grade_comment.id_comment = comments.id_comment
        WHERE comments.id_product = :id_product AND grade_comment.id_user = :id_user);
Какой вывод хочу:
JSON
1
2
3
0: {id_comment: '80', name_product: 'NAME', this_grade: 'GOOD'}
1: {id_comment: '81', name_product: 'NAME', this_grade: 'BAD'}
2: {id_comment: '82', name_product: 'NAME', this_grade: 'NULL} - (Не будет отображаться с текущем запросом)
- проблема в том что будут отображаться только те отзывы, у которых стоит оценка текущего пользователя.
Помогите! Я новичок в mysql, поэтому если запрос можно оптимизировать то сообщите!
Миниатюры
Не могу ни как реализовать mysql запрос с двумя условиями и с двумя JOIN  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2022, 13:30
Ответы с готовыми решениями:

Не работает Индекс при Left Join с двумя условиями
Привет всем. Странную вещь заметил в explain Вот запрос explain select * from cat_prices left join partmakers on...

Как правильно выглядит запрос с двумя и более условиями?
Имеется SELECT TIN FROM dbo.Organization_Table WHERE ID_Organization = n необходимо сотворить что-то вроде такого SELECT TIN FROM...

Запрос на выборку с двумя условиями
Всем доброго времени суток, столкнулся с проблемой на выборку имеется таблица с основными полями "Код района" "ФИО"...

1
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
27.06.2022, 19:10  [ТС]
Цитата Сообщение от QmlwZ Посмотреть сообщение
- проблема в том что будут отображаться только те отзывы, у которых стоит оценка текущего пользователя.
Текущий пользователь - пользователь который авторизован на сайте. В токене есть его id.
Оценка - это когда пользователь поставил оценку на комментарий.

Т.е вы листаете например ленту вк, то если вам попадется уже знакомая давняя вам лента, то она отобразит еще и вашу оценку если вы её конечно же оценили. Если вы не авторизованы или не поставили оценку (лайк или там еще что то) то оно не будет как бы активирована.

Вот, я хочу сделать так-же, вывожу комментарии, а вот текущею оценку не могу вывести.

Добавлено через 4 часа 56 минут
Ладно парни, все таки смерился что одним запросом нельзя сделать это.
Использовал под запрос
MySQL
1
IFNULL((SELECT grade FROM grade_comment WHERE id_user = :id_user AND id_comment = comments.id_comment), 'no_grade') as this_grade
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2022, 19:10
Помогаю со студенческими работами здесь

Сложный запрос с двумя INNER JOIN
Добрый день! Имеется такой запрос: command.CommandText = "INSERT INTO Результат (К_выплате, Тариф, Код_оборудования, Код_цеха) SELECT...

Простой запрос с двумя таблицами INNER JOIN
Задание такое: Примерно. Есть две таблицы - t1, t2 (Калькулятор). Написать запрос, который выведет Обороты, Мощность и Производителя...

Задачу не могу сделать идеально с двумя условиями хитрыми
есть задача от Яндекса для решения задачи я бы написал 2 разных запроса элементарных! но тут скорее всего надо написать...

Как реализовать вычитание между двумя датами через SQL-запрос
Здравствуйте! Как реализовать вычитание между двумя датами?

MySQL запрос c двумя таблицами?
Всем привет. Допустим, у меня есть таблица с users пользователями, в ней такие поля: id, login, password. И также есть таблица blacklist,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru