Выберите строки таблицы 1, если сумма colA, сгруппированная по идентификатору, больше суммы ColB в таблице 2, сгруппированной по идентификатору

#mysql #sql #database #join #select

Вопрос:

У нас есть таблица наших проданных товаров, она выглядит так : ( Таблица А )

ID sell_id пункт сумма
11 5 A 3000
12 5 B 2000
13 6 A 5120
14 7 C 5000

и таблица, в которой размещены отгруженные товары, которая выглядит следующим образом : ( Таблица B )

ID sub_id пункт сумма
1 11 A 2850
2 11 A 150
3 12 B 2100

( Таблица B сопоставляется с таблицей A путем ссылки TableA.id в таблице B как sub_id ).

Я хочу найти строки, в которых сумма суммы за TableA.id не эквивалентно сумме TableB.сумма за TableB.sub_id.

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

Я пытался соединить таблицу слева с таблицей B, но не могу заставить ее работать.

Любая помощь будет признательна. Спасибо!

Комментарии:

1. Пожалуйста, покажите свой текущий запрос с помощью соединения, как вы упомянули, и что именно не работает, чтобы мы могли помочь вам улучшить его.

2. «сумма суммы за TableA.id» — id это не ПК TableA , не так ли?

3. Таким образом, элемент в таблице b является избыточным?

4. @Serg id и sell_id-это оба pk

5. @Strawberry Это для того, чтобы уточнить дизайн нашего стола

Ответ №1:

Например:

 SELECT a.*
FROM a
WHERE NOT EXISTS ( SELECT NULL
                   FROM b
                   WHERE a.id = b.sub_id
                   GROUP BY b.sub_id
                   HAVING a.amount = SUM(b.amount) )
 

https://dbfiddle.uk/?rdbms=mysql_8.0amp;fiddle=1b13c67b6e622a5da72f63074d53d423

Комментарии:

1. @KiarashRzg Скрипка добавлена.

2. удалил инициал ! войдите в раздел «НАЛИЧИЕ», и это сработает! Ты только что спасла мне день. @Акина