SQL: выборка общих долей клиента через несколько таблиц - PullRequest
1 голос
/ 11 октября 2011

У меня есть 3 таблицы клиент (cid, имя, телефон) и транзакции (cid (ссылка), fundid, date, share) и фонд (fundid, fund_name).

Я пытаюсь написать sqlзапрос, который даст мне общее количество акций для каждого клиента для каждого фонда.

Вот примеры вставок:

INSERT INTO CUSTOMER(1, 'Alex', '123456678');

INSERT INTO CUSTOMER(2, 'Bill', '6323450236');

INSERT INTO CUSTOMER(3, 'Marie', '8568289912');



INSERT INTO FUND (1, 'Docotel');

INSERT INTO FUND (2, 'Armen');

INSERT INTO FUND (3, 'TD');




INSERT INTO TRANSACTIONS(1, 2, '2010-2-12', 234); (means shares bought)

INSERT INTO TRANSACTIONS(3, 1, '2010-4-2', 192);

INSERT INTO TRANSACTIONS(1, 2, '2010-4-22', -45); (the '-' means shares sold) 

INSERT INTO TRANSACTIONS(1, 3, '2010-4-26', 220);

INSERT INTO TRANSACTIONS(3, 2, '2010-7-21', 170);

Я хочу, чтобы результат sql выглядел примерно так:

Name| Fund_Name | Total_Shares |

Alex Docotel 189

Alex TD 220

Marie Docotel 192

Marie Armen 170

Спасибо

1 Ответ

1 голос
/ 11 октября 2011

Попробуйте это:

SELECT customer.name, fund.fund_name, T1.total_shares
FROM
(
    SELECT cid, fundid, SUM(shares) AS total_shares
    FROM transactions
    GROUP BY cid, fundid
) T1
JOIN customer ON T1.cid = customer.cid
JOIN fund ON T1.fundid = fund.fundid
ORDER BY customer.name
...