Есть запрос к БД
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 товаров, а не общих записей.
Важно, что данный запрос будет расширяться для получения доп. характеристик.
Оставлять заявки могут только авторизованные пользователи.
Приветствую, я опытен с микроконтроллерами, 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 товаров, а не их характеристики.
Здравствуйте, я готов выполнить задание.
Без проблем смогу всё объяснить.
Буду рад сотрудничать с вами.
Вот мои дополнительные контакты( andrejpuntus803@gmail.com), если вам будут интересны мои услуги, прошу вас пишите мне на почту.
Оставлять заявки могут только авторизованные пользователи.
Помощь в написании MySQL запроса
Реклама
Помощь в написании 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 товаров, а не общих записей.
Важно, что данный запрос будет расширяться для получения доп. характеристик.
Другие открытые задания:
Задание по немецкому2 000 р.
Бюджет: 2 000 р. Кто разбирается в немецком языке? Обсудим детали
Выполнить подготовку 1 главы кандидатской диссертации по спец "Менеджмент"45 000 р.
Бюджет: 45 000 р. Используя наработанный материал и опубликованную статью сформировать, дополнить и оформить надлежащим образом 1 главу диссертации по специальности "менеджмент&…
Отзывы Яндекс карты 200Rub200 р.
Бюджет: 200 р. Здравствуйте, необходимо оставлять готовые (положительные) отзывы, работа на долгий срок приветствуется, пишите в Телеграм ···
поиск заданий