CHill60
Предложение № 1: Не размещайте ссылки на фотографии ваших столов. Просто покажите данные здесь - например:
Number_ord Buyer Delivery_address Date
1 Martin Chicago 2018-12-16
2 John Berlin 2018-12-17
3 Martin Chicago 2018-12-18
Или, что еще лучше, дайте нам некоторый SQL, который мы можем скопировать, чтобы создать образец данных для себя - например:
create table #orders (number_ord int identity(1,1), Buyer varchar(50), Delivery_address varchar(50), [Date] Date)
insert into #orders values('Martin','Chicago','2018-12-16'),('John','Berlin','2018-12-17'), ('Martin','Chicago','2018-12-18')
create table #products (number_prod int, number_ord int, Qty int)
insert into #products values (469841,1,15),(469841,2,15),(999999,2,6),
(558585,2,45),(469841,3,15),(844444,3,80)
Предложение № 2 - Не пишите "но это неправильно" или "у меня тоже есть проблема" - дайте нам
подробности каких-либо сообщений об ошибках или объяснить, как результаты неверны
Сказав все это, вот некоторая помощь с вашей проблемой, но сначала некоторые предостережения: мое решение находится в стандартном T-SQL и поэтому может нуждаться в настройке для MySQL (извините, я не могу получить доступ SQLFiddle.com на данный момент). Я также не могу создавать таблицы в базе данных, к которой у меня сейчас есть доступ, поэтому я использовал временные таблицы - вам нужно будет удалить их.
#
знаки, чтобы заставить его работать на вас.
Проблема № 1 - перечислите заказы, которые имеют более 1 продукта
На самом деле для этого вам не нужны никакие объединения, вам просто нужно сгруппировать их по соответствующему столбцу в таблице Products, например
SELECT #products.Number_Ord, count(*) as cnt from #products group by #products.Number_Ord having count(*) > 1
что дает довольно голые результаты...
Number_Ord cnt
2 3
3 2
Чтобы получить более значимую информацию, вы можете использовать это как
вложенный запрос[
^] например
select #orders.Number_ord, #orders.Buyer, #orders.Delivery_address, #orders.Date, counts.cnt
from #orders
INNER JOIN (SELECT #products.Number_Ord, count(*) as cnt from #products group by #products.Number_Ord having count(*) > 1) as counts on #orders.Number_Ord=counts.Number_Ord
что дает несколько более приятные результаты ...
Number_Ord Buyer Delivery_address Date cnt
2 John Berlin 2018-12-17 3
3 Martin Chicago 2018-12-18 2
Задача № 2 - Список проданных количеств для каждого продукта
Если вы посмотрите на код, который у вас уже есть, обратите внимание, что вы вообще не ссылаетесь ни на что из таблицы заказов, поэтому избавьтесь от этого соединения, чтобы дать вам
SELECT count(#products.Number_prod),sum(#products.Qty) FROM #products GROUP BY Number_prod
Теперь это даст вам следующие результаты:
3 45
1 45
1 80
1 6
Хм... не совсем то, что вам нужно - у вас есть правильные цифры, но как сказать, какой номер идет с каким продуктом? Снимите крышку
count
из вашего запроса (я также убираю идентификатор таблицы/псевдоним, так как это не обязательно)
SELECT Number_prod,sum(Qty) FROM #products GROUP BY Number_prod
что дает вам
469841 45
558585 45
844444 80
999999 6
Вот ссылка на документацию по этому вопросу
ГРУППА ПО[
^] - Похоже, тебе нужно освежить тему разговора