Помощь в написании MySQL запроса

Задание закрыто
Статус рабочей области:Завершено
Стоимость:Договорная
Срок выполнения:3 дня
Варианты оплаты:По договоренности
Дата публикации:2023-03-22 12:43
Был(а) на сайте:2023-03-24 12:40

Помощь в написании MySQL запроса

 
Задача


Есть запрос к БД
SELECT `products`.*, `cats`.`name` as `catName`, `valute`.`value`, `stock`.`count`, `stock`.`id_mp` as `id_mps`, `stock`.`sku_seller`
FROM `products`
LEFT JOIN `cats` ON `cats`.`id` = `products`.`category_id`
LEFT JOIN `valute` ON `valute`.`id` = `products`.`valute`
LEFT JOIN `stock` ON `stock`.`id_product` = `products`.`id`
ORDER BY `products`.`id` ASC
LIMIT 100

В таблице Products хранятся товары.
В таблице Stock хранятся остатки товаров по принципу ManyToOne.

Данный запрос вытаскивает 100 строк, но т.к. в остатках может быть 2-5 строк относящихся к таблице products, мы получаем не 100 товаров, а суммарно 100 строк.

Задача
Объяснить, как переделать данный запрос для получение 100 товаров, а не общих записей.
Важно, что данный запрос будет расширяться для получения доп. характеристик.

Оставлять заявки могут только авторизованные пользователи.
Исполнитель по этому заданию выбран.
Готов помочь, сделаю быстро и распишу что да как.
Oleg W.

Быстро, аккуратно, как надо! :)

Cпециализация: Программирование и ITМое кредо:
Expert
  • 1 000 руб1 день
Приветствую!

Помогу с написанием вашего запроса.

Если удобно, обращайтесь в телеграм @oleg_jetta буду рад сотрудничеству
Даниил Коршунов
Cпециализация: Программирование и IT
  • 200 руб1 день
Нужно слегка подредактировать. Объяснение напишу
Николай Шикин

✅ Всегда иду до конца! +7 (978) 124-84-90 🏅

Cпециализация: Программирование и IT
  • 11 руб3 дня
Приветствую, я опытен с микроконтроллерами, SCADA-системами для автоматизированных систем управления на заводах, производствах.
Все работы не получается загрузить, но некоторое связаное с микроконтрллерами вот:
1) Подружил две платы
https://freelance.ru/guru_sun/arduino-parsing-iz-uart-4290366.html

2) Из сложных автоматизаций
https://freelance.ru/guru_sun/sitema-obshepita-lending-netcat-iiko-dostavka-keshbek-4329328.html

3) Вилберис автоматизировал склад
https://freelance.ru/guru_sun/dlya-vildberis-sklada-urovo-bluetooth-na-pk-otchyot-4298520.html
Также были задачи по вендинговому, инкасационному оборудованию.
Для получения 100 уникальных товаров необходимо сначала выбрать 100 уникальных id товаров, а затем для каждого id выбрать соответствующую строку из таблицы products и строки из таблиц valute и stock, если они есть.

Можно использовать подзапрос, который выбирает 100 уникальных id товаров из таблицы products и затем использовать этот список id в основном запросе для получения соответствующих строк из всех необходимых таблиц.

Пример:

SELECT products.*, cats.name as catName, valute.value, stock.count, stock.id_mp as id_mps, stock.sku_seller
FROM products
LEFT JOIN cats ON cats.id = products.category_id
LEFT JOIN valute ON valute.id = products.valute
LEFT JOIN stock ON stock.id_product = products.id
WHERE products.id IN (SELECT id FROM products ORDER BY id ASC LIMIT 100)
ORDER BY products.id ASC

Здесь подзапрос SELECT id FROM products ORDER BY id ASC LIMIT 100 выбирает первые 100 уникальных id товаров из таблицы products, а основной запрос выбирает соответствующие строки из всех необходимых таблиц для каждого из этих id.

Для расширения запроса для получения дополнительных характеристик можно просто добавить соответствующие LEFT JOIN и SELECT выражения в основной запрос. Например:

SELECT products.*, cats.name as catName, valute.value, stock.count, stock.id_mp as id_mps, stock.sku_seller, features.name as featureName, features.value as featureValue
FROM products
LEFT JOIN cats ON cats.id = products.category_id
LEFT JOIN valute ON valute.id = products.valute
LEFT JOIN stock ON stock.id_product = products.id
LEFT JOIN product_features ON product_features.id_product = products.id
LEFT JOIN features ON features.id = product_features.id_feature
WHERE products.id IN (SELECT id FROM products ORDER BY id ASC LIMIT 100)
ORDER BY products.id ASC

Здесь мы добавили LEFT JOIN для таблиц product_features и features и SELECT выражения для их полей name и value. При этом подзапрос остается без изменений, так как он выбирает уникальные id товаров, а не их характеристики.
Тим Патрик

честность, ответственность...

Cпециализация: Программирование и IT
  • 1 000 руб3 дня
Здравствуйте! Готов заняться...
Суть ошибки понял и знаю как исправить, свяжитесь со мной в телеграме @erzhorzh, посмотрю таблицы, проверю свой код и все вам объясню
Павел Гарев

Лучше меньше, да лучше!

Cпециализация: Программирование и IT
  • 500 руб2 дня
Добрый день!
Решу Вашу задачу.
Обращайтесь.
Андрей Пунтус

Я никогда не сдаюсь и всегда довожу работу до конца

Cпециализация: Программирование и IT
  • 500 руб1 день
Здравствуйте, я готов выполнить задание.
Без проблем смогу всё объяснить.
Буду рад сотрудничать с вами.
Вот мои дополнительные контакты( andrejpuntus803@gmail.com), если вам будут интересны мои услуги, прошу вас пишите мне на почту.

Оставлять заявки могут только авторизованные пользователи.