MySQL Sum Problem - PullRequest
       2

MySQL Sum Problem

1 голос
/ 12 сентября 2011

У меня есть таблица а и б.

  • a имеет order_id и ship_total
  • b имеет идентификатор_порядка, номенклатуру, кол-во и цену

Как запросить и получить сумму всех ship_total по всем заказам, у которых общее количество меньше 100?

Боюсь, если я сделаю что-то подобное, это будет неправильно.

select SUM(ship_total) FROM a as a inner join b as b on a.order_id=b.order_id WHERE SUM(qty) < 100 GROUP BY a.order_id

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

Я попробовал ответы снизу, и он не складывает все вместе. Это дает мне сумму доставки с каждого заказа.

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

В одну сторону:

SELECT
    SUM(A.ship_total)
FROM
    (SELECT B.order_id FROM B GROUP BY B.order_id HAVING SUM(qty) < 100) SQ
INNER JOIN A ON
    A.order_id = SQ.order_id

Другой способ:

SELECT
    SUM(A.ship_total)
FROM
    A
WHERE
    order_id IN (
        SELECT order_id
        FROM B
        GROUP BY order_id
        HAVING SUM(qty) < 100)

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

0 голосов
/ 12 сентября 2011

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

select SUM(ship_total) 
FROM a as a 
inner join b as b 
  on a.order_id=b.order_id 
GROUP BY a.order_id
having SUM(qty) < 100 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...