У меня есть таблица значений, которую я выбираю из базы данных с помощью sql.
SELECT
a.Chapter, a.price, b.book
FROM
Table1 a, Table2 b, Table3 c
WHERE
a.id = c.id and b.id = c.id2
GROUP BY
a.Chapter, a.price
ORDER BY
a.Chapter
Значения, которые он возвращает:
|Chapter|Price|book|
|_______|_____|____|
|01 | 25 |eg1 |
|01 | 23 |eg2 |
|01 | 9 |eg3 |
|02 | 15 |eg4 |
|02 | 89 |eg5 |
|02 | 11 |eg6 |
|02 | 3 |eg7 |
|02 | 25 |eg8 |
Как я могу взять цены на каждый повторяющийся 01 (который находится в формате строки, потому что это не глава книги) и добавить их вместе и сделать их новой ценой? Например:
Chapter Price
01 57
02 143
Часть книги на данный момент не очень важна, поэтому ее можно исключить
То, что вы делаете, неверно. Вы группируете по разделам и цене, но также выбираете книгу. Эта книга будет одной из книг, соответствующих главе и цене, произвольно выбранной. Итак, с этими данными
book chapter price eg1 01 25 eg1 02 30 eg2 01 25 eg3 01 30
вы можете получить
book chapter price eg1 01 25 eg1 02 30 eg3 01 30
тем самым подавляя книгу eg2.
Во всяком случае, вы получаете строку результатов в каждой главе с главой GROUP BY chapter
. Вы получаете сумму с SUM
.
select chapter, sum(price)
from chapters
group by chapter;
order by chapter;
Это может быть достигнуто только с одной таблицей
SELECT
a.Chapter, SUM(a.price) as price
FROM
Table1 a
GROUP BY
a.Chapter
ORDER BY
a.Chapter
Вы пробовали DISTINCT?
SELECT DISTINCT x
from table1
where example = example2
SELECT a.Chapter, sum(a.price)
FROM Table1 a
INNER JOIN Table3 c on c.id = a.id
INNER JOIN Table2 b on b.id = c.id
GROUP BY
a.Chapter
ORDER BY
a.Chapter
from books b join chapters c on c.book_id = b.book_id
.