Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Помогите пожалуйста с 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
7-48802
Arm79
2003-06-25 15:19
2003.09.15
Сообщения Windows


14-48684
AndreySoft
2003-08-28 13:06
2003.09.15
Как зашифровать текст и поместить его в файл


3-48466
Nikolai_S
2003-08-22 16:00
2003.09.15
Сохранение данных из базы данных в MS Word


3-48436
boka
2003-08-25 12:09
2003.09.15
цветной DBGrid


14-48790
Rauf
2003-08-26 03:23
2003.09.15
Помогите, где скачать исходники Quake3 Arena???