MySQL запрос для 3 таблиц, объединение или объединение, какой из них лучше всего рассчитать баланс? - PullRequest
1 голос
/ 09 мая 2011

С помощью следующих 3 таблиц, как рассчитать баланс запасов для миллионов записей лучшим / быстрым способом?!
Как показывает мой опыт, использование объединения может занять менее 0,1 секунды, но не окончательный результат,
использование union может привести к окончательному результату, но это занимает 1x сек ...

stocktable
stid    productid   qty
1   1   100
2   2   200

sellstable
sellid  stid    qty
1   1   50
2   1   30

scraptable
scrapid stid    qty
1   1   10
2   1   5
3   2   100
SELECT
    a.stid,
    qty,
    sellid,
    b.qty,
    scrapid,
    c.qty
FROM
    stocktable AS a
LEFT JOIN sellstable AS b ON a.stid = b.stid
LEFT JOIN scraptable AS c ON a.stid = c.stid

1   100 1   50  1   10
1   100 1   50  1   5
1   100 2   30  1   10
1   100 2   30  1   5
2   200 null    null    3   100

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

добавлена ​​информация:

the result should be
1   5
2   100

спасибо!

1 Ответ

0 голосов
/ 09 мая 2011

Если вам буквально нужны все столбцы в вашем запросе вместе с суммой трех кол-во полей, тогда вы можете сделать SUM(a.qty+b.qty+c.qty), но сложно точно определить, что вы ищете.Есть ли определенный ключ в тех таблицах, по которым вы хотите сгруппировать?Вам вообще нужны сэллид и слипид?

...