Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
ВнизПомогите пожалуйста с SQL запросом. Найти похожие ветки
← →
denick (2003-08-24 04:03) [0]Есть 2 таблицы kvitDan(с полями gos_id и gko_id) и Gko(id и percent); gko_id = id. Необходимо в результате сгруппировать по полю gos_id повторяющиеся значения и при этом просуммировать поле percent, но причем, если значения поля gko_id повторяются, то не суммировать значения поля percent.
Т.е.
kvitDan: gos_id gko_id и Gko: id percent
4 1 1 2.2
4 3 3 4.5
4 1
В результате должно вывести gos_id percent
4 6.7 но не 8.9
← →
Rad (2003-08-24 08:31) [1]Нету под рукой акцесса, но вот такой запрос:
select
min(kvitDan.gos_id),
min(distinct Gko.percent)
from kvitDan, Gko
where Gko.id = kvitDan.gko_id
group by kvitDan.gos_id, kvitDan.gko_id
выбирает существующие percent для каждого gos_id.
Надо бы дальше сделать (наверное)select from select
- но у меня есть только Firebird, а он такого не позволяет.
Попробуй.
← →
Rad (2003-08-24 08:31) [2]Нету под рукой акцесса, но вот такой запрос:
select
min(kvitDan.gos_id),
min(distinct Gko.percent)
from kvitDan, Gko
where Gko.id = kvitDan.gko_id
group by kvitDan.gos_id, kvitDan.gko_id
выбирает существующие percent для каждого gos_id.
Надо бы дальше сделать (наверное)select from select
- но у меня есть только Firebird, а он такого не позволяет.
Попробуй.
← →
Johnmen (2003-08-24 19:20) [3]>...сгруппировать по полю gos_id повторяющиеся значения и
>при этом просуммировать поле percent, но причем, если значения
>поля gko_id повторяются, то не суммировать значения поля percent.
Где-то здесь противоречие, не кажется ?
← →
denick (2003-08-25 09:55) [4]> Johnmen ©
Я привел пример. Мне нужно просуммировать значения поля percent, но так чтобы повторяющиеся id не суммировались. sum(distinct Gko.percent) не проходит, т.к. Access пишет об ошибке.
← →
stud (2003-08-25 10:12) [5]так суммируй по таблице gko
← →
denick (2003-08-25 10:15) [6]> stud ©
Мне нужно чтобы в результате выводило gos_id и percent
← →
denick (2003-08-25 10:32) [7]Люди, а как одновременно сделать 2 SQL запроса?
Чтобы сначала сгруппировать в таблице kvitDan поля gos_id и percent (gko_id = id), а затем проссумировать percent, получившийся в первом запросе.
т.е. после первого запроса получается gos_id percent
4 2.2
4 4.5
а после второго gos_id percent
4 6.7
← →
denick (2003-08-25 11:19) [8]Мастера, есть SQL запрос:
select DISTINCT kvitDan.gos_id, Gko.percent From kvitDan, Gko
where kvitDan.gko_id = Gko.id
а как теперь результат этого запроса обработать таким образом, чтобы получилось просуммированное поле Gko.percent
← →
stud (2003-08-25 11:23) [9]так сначала суммируй а потом делай объединение таблиц, чтобы показать недостающую информацию
← →
denick (2003-08-25 11:32) [10]В том, то и дело что надо сначало убрать повторяющиеся значения, а потом просуммировать. А как это сделать у меня не получается. Уже всё перепробовал.
← →
Sandman25 (2003-08-25 11:42) [11]
select kvitDan.gos_id, sum(unique Gko.percent)
не пойдет?
From kvitDan, Gko
where kvitDan.gko_id = Gko.id
group by 1
← →
denick (2003-08-25 11:49) [12]sum(unique Gko.percent)
В Access`e это не проходит, пишет что ошибка синтаксиса(пропущен оператор) в выражении запроса sum(unique Gko.percent).
Также происходит и с sum(distinct Gko.percent)
← →
Sandman25 (2003-08-25 11:59) [13]В Access есть возможность select from select или временные таблицы?
← →
stud (2003-08-25 12:02) [14]тебе нужно сделать distinct для gko_id а потом сумму по полученной выборке
а вообще Johnmen © прав, какие-то тут непонятки)))
почему в kvitdan несколько одинаковых записей?? может их стоит оттуда удалить?
← →
Quest (2003-08-25 12:05) [15]>Sandman25 (25.08.03 11:59) [13]
>В Access есть возможность select from select или временные >таблицы?
Временные таблицы есть! и с помощью них прекрасно решаются запросы любой сложности.
← →
Sandman25 (2003-08-25 12:15) [16]Quest © (25.08.03 12:05)
Значит, можно и эту решить :)
Записать во временную select distinct gos_id, gko_id from kvitDan,
а потом просуммировать по ней как обычно, связываясь со второй таблицей.
← →
denick (2003-08-25 12:16) [17]> Quest ©
>Временные таблицы есть! и с помощью них прекрасно решаются >запросы любой сложности.
Это получается, мне каждый раз в определённый момент нужно создавать эту временную таблицу, а затем её DROP`ать?
← →
Sandman25 (2003-08-25 12:21) [18]denick (25.08.03 12:16)
Да. Она поэтому и называется временной.
← →
Quest (2003-08-25 12:26) [19]можно в базу записать View - запросы, то бишь представления и обращаться с ними как с таблицами, тогда и DROP-ать ничего не надо
← →
Quest (2003-08-25 12:37) [20]- заходишь в Excel
- открываешь свою базу
- на вкладке ЗАПРОСЫ создаешь свой запрос к нескольким таблицам, вроде:select distinct gos_id, gko_id from kvitDan
- а в программе обращаешся к этому запросу по его имени - как к таблице и делаешь всё что тебе заблагорассудится.
... а можешь пойти дальше и зделать запрос к запросу и т.д до тех пор пока не получишь "чистых данных" с которыми и работаешь из программы.
← →
denick (2003-08-25 12:46) [21]> Quest © (25.08.03 12:26) [19]
> Спасибо огромное!
← →
Quest (2003-08-25 12:49) [22]пардон :)
разумеется "- заходишь в Excel" следует понимать как:
- Заходишь в Access
я тут на форуме сосвоим вопросом по Excel сижу, поэтому и опечатался
← →
Hawk2 (2003-08-25 12:59) [23]Quest © (25.08.03 12:26) [19]
А разве в Access представления работают?
← →
Quest (2003-08-25 13:04) [24]созданные напосредственно в Access - работают, и я частенько ими пользуюсь при сложной выборке из 10 - 15 таблиц! ... представляю как пришлось бы без них извращаться в одном запросе :)
← →
Игорь Ч (2003-08-25 13:40) [25]почему непосредственно в Access можно и из делфей создать
CREATE VIEW q1 AS select ....
вот только запрос к запросу так не проверял, работает или нет.
А в среде Accessa действительно все просто
делаешь один запрос типа
имя запроса - Q1
select distinct t1.*, t2.percent
from KvitDan t1
left join Gko t2 on (t1.gko_id = t2.id)
а потом второй запрос типа
имя запроса Q2
select gko_id, sum(percent)
from Q1
group by gko_id
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c