#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. удалил инициал ! войдите в раздел «НАЛИЧИЕ», и это сработает! Ты только что спасла мне день. @Акина