2012-04-02 7 views
1

У меня есть база данных, и я пытаюсь получить список имен наряду с общим значением для заимствованных предметов.MYSQL TotalValue, когда другой столбец имеет заданное значение

В настоящее время все данные, которые мне нужны, можно посмотреть в следующем запросе.

SELECT * 
FROM Borrower b 
JOIN Loan l ON b.BorId = l.BorId 
JOIN BookCopy bc ON l.BcId = bc.BcId 
JOIN BookTitle bt ON bc.BtId = bt.BtId 

В конце дня я хочу b.BorName в колонке и сумма bt.Value для каждого из заемщиков в другой колонке.

В приведенном выше описании показано несколько строк для каждого имени BorName, так как у каждого человека есть несколько предметов, заимствованных, но я хочу уменьшить это до одной строки для Заемщика с суммой всех связанных полей bt.value в другом столбце.

Я попытался выбрать ниже

SELECT b.BorName, SUM(DISTINCT bt.Value) as Total 
FROM Borrower b 
JOIN Loan l ON b.BorId = l.BorId 
JOIN BookCopy bc ON l.BcId = bc.BcId 
JOIN BookTitle bt ON bc.BtId = bt.BtId 

Но это просто возвращает одну строку для первого Заемщиком в запросе с их общей стоимости.

Я достиг предела моих текущих знаний MYSQL и пробовал смотреть дальше в GROUP BY, например. SUM и подзапросы, но не могут понять, что я должен делать.

ответ

2

Попробуйте

SELECT b.BorName, SUM(bt.Value) AS 'Total' 
FROM Borrower b 
JOIN Loan l ON b.BorId = l.BorId 
JOIN BookCopy bc ON l.BcId = bc.BcId 
JOIN BookTitle bt ON bc.BtId = bt.BtId 
GROUP BY b.BorName 
+0

Что делать, если я тогда хотел, чтобы ограничить это где "Тоталь значение было> 10? Я пробовал просто ГДЕ как до, так и после GROUP BY, ссылаясь на Total или SUM (bt.Value), но не работает. –

+0

Для кого-нибудь эта ссылка поможет http://codespatter.com/2008/07/22/conditions-on-count-or-sum-in-mysql/ Слово, которое вы ищете, это –

+0

@ mr.user1065741 Да, вам нужно использовать 'HAVING' –