MariaDB сумма размеров от идентификатора в таблице до идентификаторов в другой - PullRequest
1 голос
/ 10 апреля 2020

Я новичок в SQL запросах, так что, надеюсь, можно задать этот вопрос здесь. В моей MariaDB у меня есть две таблицы, которые выглядят так:

downloads
(`uid`, `tstamp`, `fid`, `notes`) VALUES
(1, 1352001731, 14, ''),
(1, 1357403888, 20, ''),
(2, 1357432414, 9,  ''),
(2, 1357544813, 4,  ''),
(1, 1357653803, 12, '');

files
(`id`, `guid`, `uid`, `size`) VALUES
(12, 35, 57, 10910074),
(20, 47, 42, 9348993),
(11, 35, 57, 76510074),
(47, 47, 52, 45548993),
(9,  35, 37, 1560074),
(4,  47, 22, 6788993),
(15, 51, 12, 323450993);

Я бы хотел запросить конкретный uid в таблице downloads и суммировать размеры совпадений id в files с соответствующими fid в downloads. Так, например, если я запросил uid 2, он должен вернуть сумму размеров от id 9 и 4 в files (8349067). Любые советы или рекомендации приветствуются.

Моя полная схема здесь:

https://pastebin.com/Bb96ZWMw

РЕШЕНИЕ: небольшое изменение в принятом ответе помогло мне, чтобы получить результат, который я хотел:

SELECT SUM(size)
FROM   downloads d
JOIN   files f ON d.fid = f.id
WHERE  d.uid = 2

1 Ответ

1 голос
/ 10 апреля 2020

Я бы присоединился к двум таблицам и суммировал бы размеры:

SELECT   d.uid, SUM(size)
FROM     downloads d
JOIN     files f ON d.fid = f.id
GROUP BY d.uid

Если вы просто заинтересованы в конкретном uid, вы можете указать это в предложении where, и для go группировка:

SELECT SUM(size)
FROM   downloads d
JOIN   files f ON d.fid = f.id
WHERE  d.uid = ...
...