powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, понять как должен выглядеть запрос
14 сообщений из 14, страница 1 из 1
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425710
izov_OLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Мне дали задание по MySQL с пониманием того, что я в нем ничего не смыслю, но для меня очень важно его выполнить. Есть две связанные таблицы и нужно сделать запрос, я читал, смотрел примеры, но проблема в том, что не понимаю как вообще возможно сделать такой запрос.
Если в одной таблице есть поле ManId и поле ManName, а в другой - ProdactId и ProdactName и указано что поле ManId описывает какой человек какой товар покупал. В результате, нужно сделать запрос, который бы вывел список ManName отсортированный по количеству купленных товаров (вверху тот, кто больше всего купил и внизу тот, кто меньше всего).
И я не понимаю, если поле ManId сохраняет данные про то КАКОЙ товар купил человек, то так сделать так, что бы данное поле имело количественное значение, по которой можно будет сделать сортировку.
Возможно, я задаю глупый вопрос, но я не понимаю логику этого задания, помогите мне, пожалуйста, разобраться.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425735
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
izov_OLE,

очень похоже, что нужна третья табличка...
ManID, ProductID, BuyCount
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425746
izov_OLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прохожий456, и эту третью табличку нужно как то получить на основе тех, что уже есть? Тогда вопрос, как посчитать количество куплены товаров, которые хранятся в поле ManId?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425749
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логика такая:
1) Связываем таблицы по соответствующему полю, и получаем как бы в одной таблице данные и по человеку, и по его товару. При этом к одной записи человека привяжется несколько записей его товара (соответственно будет сделано необходимое количество копий записи про человека).
Код: sql
1.
2.
FROM ManName 
JOIN ProdactName ON ManName.ManId = ProdactName.ManId 


2) Группируем записи по человеку. Т.е. "сплошной" список будет "поделен" на группы, в каждой только те данные, у которых один и тот же человек (но разные товары).
Код: sql
1.
GROUP BY ManName.ManId


3) Считаем количество записей в каждой группе. Получаем для человека, чья группа, поле с количеством товаров у него.
Код: sql
1.
COUNT(ProdactName.ProdactId)


4) Сортируем по этому полю, причём по убыванию.
Код: sql
1.
ORDER BY COUNT(ProdactName.ProdactId) DESC


5) Выводим нужные поля.
Код: sql
1.
SELECT ManName.*, COUNT(ProdactName.ProdactId) AS ProdCount



А теперь всё вместе:
Код: sql
1.
2.
3.
4.
5.
SELECT ManName.*, COUNT(ProdactName.ProdactId) AS ProdCount
FROM ManName 
JOIN ProdactName ON ManName.ManId = ProdactName.ManId
GROUP BY ManName.ManId
ORDER BY COUNT(ProdactName.ProdactId) DESC
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425755
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прохожий456очень похоже, что нужна третья табличка...
ManID, ProductID, BuyCountУ него чётко указано:

izov_OLEв другой - ProdactId и ProdactName и указано что поле ManId описывает какой человек какой товар покупалт.е. поле ManId находится в таблице ProdactName.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425760
izov_OLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо Вам огромное, буду разбираться!
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425789
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

izov_OLEЕсли в одной таблице есть поле ManId и поле ManName, а в другой - ProdactId и ProdactName.

Имен таблиц нет, написано, что это поля...
Имеем никакую постановку задачи, частичную или ошибочную...
я исхожу из того, что все таки должна быть третья таблица покупок, с количествами...
А две описанные таблицы - это просто справочники
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425793
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaУ него чётко указано:
поле ManId находится в таблице ProdactName.
Ничего там четко не указано. И таблица с именем ProdactName - это ваша фантазия.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425809
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если предположить, что структура БД имеет вид
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ManTbl
* ManID
* ManName

ProductTbl
* ProductID
* ProductName

BuyTbl
* ManID
* ProductID
* BuyCount



В разрезе клиент
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select ManTbl.ManName, BuyRes.BuySums
from (
select ManID, sum(BuyCount) as BuySums
from BuyTbl
group by ManID)
as BuyRes
join ManTbl on ManTbl.ManID = BuyRes.ManID
order by BuyRes.BuySums desc



В разрезе клиент+товар
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select ManTbl.ManName, ProductTbl.ProductName, BuyRes.BuySums
from (
select ManID, ProductID, sum(BuyCount) as BuySums
from BuyTbl
group by ManID, ProductID)
as BuyRes
join ManTbl on ManTbl.ManID = BuyRes.ManID
join ProductTbl on ProductTbl.ProductID = BuyRes.ProductID
order by BuyRes.BuySums desc
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39425855
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как работает...
ManTbl
ManID ManName1 Сидоров2 Петров3 Иванов

ProductTbl
ProductID ProductName1 Ручка2 Карандаш3 Бумага А44 Картон А4

BuyTbl
ManID ProductID BuyCount1 1 21 3 31 4 12 2 32 1 43 4 10

Шаг 1 : группировка и суммирование, вложенный запрос
Код: sql
1.
2.
3.
select ManID, sum(BuyCount) as BuySums
from BuyTbl
group by ManID


получим таблицу
ManID BuySums1 2+3+1=62 3+4=73 10
данную таблицу обзываем BuyRes
Код: sql
1.
2.
3.
4.
5.
from (
select ManID, sum(BuyCount) as BuySums
from BuyTbl
group by ManID)
as BuyRes



Шаг 2 : Цепляем к нашей BuyRes таблицу-справочник ManTbl
Код: sql
1.
join ManTbl on ManTbl.ManID = BuyRes.ManID



получим табличку
BuyRes.ManID BuyRes.BuySums ManTbl.ManID ManTbl.ManName161Сидоров272Петров3103Иванов

Шаг 3 : Оставим в табличке только необходимые поля
Код: sql
1.
select ManTbl.ManName, BuyRes.BuySums



ManTbl.ManName BuyRes.BuySumsСидоров 6Петров 7Иванов 10

Шаг4 : отсортируем по колонке суммы в обратном порядке
Код: sql
1.
order by BuyRes.BuySums desc



ManTbl.ManName BuyRes.BuySumsИванов 10Петров 7Сидоров 6
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39426047
izov_OLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прохожий456, скажите, пожалуйста, а если упростить и предположить, что 1 человек покупал только 1 товар, то тогда поле BuyCount будет не обязательным, так как все значения буду равны 1. Можно как то решить это задание, если считать его верным и предположить, что третьей таблицы быть не должно?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39426052
izov_OLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, действительно немного не дописал, поля ManId и ManName находятся в таблице Man, а ProdactId и ProdactName в таблице Prodact, но никакой третьей таблицы в поставленном задании нет.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39426139
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
izov_OLEПрошу прощения, действительно немного не дописал, поля ManId и ManName находятся в таблице Man, а ProdactId и ProdactName в таблице Prodact, но никакой третьей таблицы в поставленном задании нет.
Решение данной задачи предложил комрад Akina, надо только таблицы переименовать
...
Рейтинг: 0 / 0
Помогите, пожалуйста, понять как должен выглядеть запрос
    #39426141
Прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+ таблица Prodact должна содержать столбец manId
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, понять как должен выглядеть запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]