Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.5 MB
Время: 0.012 c
4-48823
Orion2
2003-07-15 12:40
2003.09.15
Переопределение оконной процедуры нескольким TEdit


7-48815
Ega23
2003-06-25 09:22
2003.09.15
Идеологический вопрос про USB (+)


1-48515
Sfagnum
2003-09-02 15:30
2003.09.15
Можно ли результатом функции сделать динамический массив записей


1-48563
BOA_KAA
2003-09-04 12:54
2003.09.15
TFileStream & String


7-48814
gunner
2003-07-02 12:05
2003.09.15
FindWindow !?!?!?!? Фича или бага ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский