![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите пожалуйста с SQL запросом. [D7, Access]
denick © (2003-08-24 04:03:00)
Есть 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
Игорь Ч (2003-08-25 13:40:00) [1]
почему непосредственно в 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
Quest (2003-08-25 13:04:00) [2]
созданные напосредственно в Access - работают, и я частенько ими пользуюсь при сложной выборке из 10 - 15 таблиц! ... представляю как пришлось бы без них извращаться в одном запросе :)
Hawk2 (2003-08-25 12:59:00) [3]
Quest © (25.08.03 12:26) [19]
А разве в Access представления работают?
Quest (2003-08-25 12:49:00) [4]
пардон :)
разумеется "- заходишь в Excel"следует понимать как:
- Заходишь в Access
я тут на форуме сосвоим вопросом по Excel сижу, поэтому и опечатался
denick (2003-08-25 12:46:00) [5]
> Quest © (25.08.03 12:26) [19]
> Спасибо огромное!
Quest (2003-08-25 12:37:00) [6]
- заходишь в Excel
- открываешь свою базу
- на вкладке ЗАПРОСЫ создаешь свой запрос к нескольким таблицам, вроде:select distinct gos_id, gko_id from kvitDan
- а в программе обращаешся к этому запросу по его имени - как к таблице и делаешь всё что тебе заблагорассудится.
... а можешь пойти дальше и зделать запрос к запросу и т.д до тех пор пока не получишь "чистых данных" с которыми и работаешь из программы.
Quest (2003-08-25 12:26:00) [7]
можно в базу записать View - запросы, то бишь представления и обращаться с ними как с таблицами, тогда и DROP-ать ничего не надо
Sandman25 (2003-08-25 12:21:00) [8]
denick (25.08.03 12:16)
Да. Она поэтому и называется временной.
denick (2003-08-25 12:16:00) [9]
> Quest ©
>Временные таблицы есть! и с помощью них прекрасно решаются >запросы любой сложности.
Это получается, мне каждый раз в определённый момент нужно создавать эту временную таблицу, а затем её DROP`ать?
Sandman25 (2003-08-25 12:15:00) [10]
Quest © (25.08.03 12:05)
Значит, можно и эту решить :)
Записать во временную select distinct gos_id, gko_id from kvitDan,
а потом просуммировать по ней как обычно, связываясь со второй таблицей.
Quest (2003-08-25 12:05:00) [11]
>Sandman25 (25.08.03 11:59) [13]
>В Access есть возможность select from select или временные >таблицы?
Временные таблицы есть! и с помощью них прекрасно решаются запросы любой сложности.
stud (2003-08-25 12:02:00) [12]
тебе нужно сделать distinct для gko_id а потом сумму по полученной выборке
а вообще Johnmen © прав, какие-то тут непонятки)))
почему в kvitdan несколько одинаковых записей?? может их стоит оттуда удалить?
Sandman25 (2003-08-25 11:59:00) [13]
В Access есть возможность select from select или временные таблицы?
denick (2003-08-25 11:49:00) [14]
sum(unique Gko.percent)
В Access`e это не проходит, пишет что ошибка синтаксиса(пропущен оператор) в выражении запроса sum(unique Gko.percent).
Также происходит и с sum(distinct Gko.percent)
Sandman25 (2003-08-25 11:42:00) [15]
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:32:00) [16]
В том, то и дело что надо сначало убрать повторяющиеся значения, а потом просуммировать. А как это сделать у меня не получается. Уже всё перепробовал.
stud (2003-08-25 11:23:00) [17]
так сначала суммируй а потом делай объединение таблиц, чтобы показать недостающую информацию
denick (2003-08-25 11:19:00) [18]
Мастера, есть SQL запрос:
select DISTINCT kvitDan.gos_id, Gko.percent From kvitDan, Gko
where kvitDan.gko_id = Gko.id
а как теперь результат этого запроса обработать таким образом, чтобы получилось просуммированное поле Gko.percent
denick (2003-08-25 10:32:00) [19]
Люди, а как одновременно сделать 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 10:15:00) [20]
> stud ©
Мне нужно чтобы в результате выводило gos_id и percent