Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы по выборке и статистике / 10 сообщений из 10, страница 1 из 1
12.12.2015, 23:54:18
    #39126545
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
Доброго времени суток!

Помогите пожалуйста написать три запроса.

1) Количество товара (всего) на складе.
2) Выбрать товары, которые поставляет данный поставщик.
3) Вставка новой покупки/поставки.
4) Рейтинг работников по сумме продаж в текущем месяце.

Третий я понял как делать:
Код: sql
1.
insert into buys(buyDate, idWorker) values ('2015-11-22 15:00:00', 1);



Но все остальные понять не могу, как делать. Я так понял, что первые два это на выборку, а последний это на статистику.

Вот таблицы:
...
Рейтинг: 0 / 0
14.12.2015, 11:16:21
    #39127080
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
Ну во первых, если workers - это приказчикипродавцыменеджеры по продажам, то buys надо изменить на sells/orders :)
Во-вторых:
1)читать про sum(), join и where;
2)читать про distinct, join и where;
3)вы ещё забыли добавление состава поставки/продажи;
4)читать про sum(), join, where, group by и order by.
В-третьих, если не хочется про всё это читать, а потом ещё и осмысливать, то вам сюда .
...
Рейтинг: 0 / 0
16.12.2015, 16:27:02
    #39129954
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
tanglir,
tanglirВ-третьих, если не хочется про всё это читать, а потом ещё и осмысливать...
Не, надо разобраться. Просто не знал с чего начать и какие команды использовать.

Ну вот вроде получилось что-то. Но у меня есть пара вопросов.
1. Можно ли сделать вставку (задание 3) одним запросом, а не двумя?
2. По заданию №4 считать кол-во продаж нужно за текущий месяц, как прописать условие в WHERE, чтобы кол-во товара бралось только из текущего месяца?

1) Количество товара (всего) на складе.
Код: sql
1.
SELECT sum(supplyQuantity) FROM supplys INNER JOIN squantitys using(idSupply);



2) Выбрать товары, которые поставляет данный поставщик.
Код: sql
1.
SELECT distinct idProduct FROM supplys INNER JOIN squantitys using(idSupply) where idLifnr = 1;



3) Вставка новой покупки/поставки.
Код: sql
1.
2.
INSERT INTO buys(buyDate, idWorker) VALUES ('2015-11-22 15:00:00', 1);
INSERT INTO bquantitys(idBuy, idProduct, buyQuantity) VALUES (4, 2, 45);



4) Рейтинг работников по сумме продаж в текущем месяце.
Код: sql
1.
SELECT sum(buyQuantity) FROM buys INNER JOIN bquantitys using(idBuy) WHERE idWorker = 1 ORDER BY idWorker;
...
Рейтинг: 0 / 0
17.12.2015, 07:37:23
    #39130392
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
1. Нет, вы же вставляете в две таблицы.
2.
Код: sql
1.
2.
3.
buydate >= date_add(CURDATE(), interval (1-day(CURDATE())) DAY)
AND
buydate < date_add(date_add(CURDATE(), interval (1-day(CURDATE())) DAY),interval 1 MONTH)


1)Это только приход, а где расход? И почему складывается всё подряд? а хотя да, у товаров же нет единиц измерения. Ну, тогда всё в порядке
4)Ордербай не тот, вам же по сумме надо сортировать.
...
Рейтинг: 0 / 0
19.12.2015, 20:21:47
    #39132396
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
tanglir,
2 и 3 приняли, а 1 и 4 нет(

В 1 нужно вычитать из того, что поставили то, что продали и этот остаток, якобы, хранится на складе.

В 4 нужно посчитать сумму денег, которые принес каждый продавец.

Я если честно не соображу как делать. В 1 нужно 4 таблицы соединять, но у меня не получается. Есть идеи?=)
...
Рейтинг: 0 / 0
19.12.2015, 21:07:01
    #39132406
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
1ое вроде понял, как делать:
Код: sql
1.
SELECT squantitys.idProduct, supplyQuantity - buyQuantity  FROM squantitys LEFT JOIN supplys on supplys.idSupply = squantitys.idSupply, bquantitys LEFT JOIN buys on buys.idBuy=bquantitys.idBuy Where bquantitys.idProduct = squantitys.idProduct;
...
Рейтинг: 0 / 0
19.12.2015, 21:59:45
    #39132427
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
А 4ый вроде так:
Код: sql
1.
2.
3.
select idWorker, (bquantitys.buyQuantity * products.productCost) AS rating from bquantitys LEFT JOIN buys on buys.idBuy = bquantitys.idBuy LEFT JOIN products on bquantitys.idProduct = products.idProduct Where (bquantitys.idProduct = products.idProduct) AND buydate >= date_add(CURDATE(), interval (1-day(CURDATE())) DAY)
AND
buydate < date_add(date_add(CURDATE(), interval (1-day(CURDATE())) DAY),interval 1 MONTH) order by rating DESC;



Верно?
...
Рейтинг: 0 / 0
20.12.2015, 19:07:49
    #39132602
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
PROaction1ое вроде понял, как делать:Для реализации исходной формулировки прокатит, "но есть один нюанс"(с) - оно будет работать только по всем операциям, а стоит задать определённый период - и ага. Почему, предлагаю подумать самостоятельно.
PROactionА 4ый вроде так:ну с виду вроде верно.
...
Рейтинг: 0 / 0
23.12.2015, 23:31:42
    #39136625
PROaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
tanglir,
не могу никак сделать я выборку на кол-во товаров на складе.
Тут нужны подзапросы.
У меня логика такая: сосчитать одним запросом сумму каждого товара в поставке и сумму каждого товара в покупке, а потом вычитать одно из другого, но реализовать у меня не получается.
Может быть Вы знаете, как это сделать?

Пока у меня получилось следующее:
Код: sql
1.
SELECT * FROM (SELECT idProduct, sum(supplyQuantity) FROM squantitys group by idProduct) as sumSup, (SELECT idProduct, sum(buyQuantity) FROM bquantitys group by idProduct) as sumBuy;



Но в этом запросе по нескольку раз одни и те же товары выскакивают. Нужно, я так понимаю, присоединить таблицу products и сравнивать products.idProduct c b/sQuantitys.idProducts, но как я не знаю(
...
Рейтинг: 0 / 0
24.12.2015, 07:55:25
    #39136693
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы по выборке и статистике
PROaction,

Код: sql
1.
2.
3.
4.
...
from products
left join (SELECT idProduct, sum(supplyQuantity) FROM squantitys group by idProduct) using (idProduct)
left join (SELECT idProduct, sum(buyQuantity) FROM bquantitys group by idProduct) using (idProduct)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы по выборке и статистике / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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