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

Вниз

Монстры, что с запросом? посоветуйте   Найти похожие ветки 

 
Oleg_er   (2002-06-13 15:26) [0]

есть табличка (не очень большая - 300 зап)
kol, prizn, name
нужно состряпать

name | kol1 | kol2
------------------
qqq | 342 | 0
qqq1 | 21 | 23
qwe | 0 | 22

причем
kol1 -> sum(kol), где prizn=1
kol2 -> sum(kol), где prizn=2

делаю так
select name, sum(r.kol) as kol1, sum(r1.kol) as kol2
from tbl r, tbl r1
where (r.prizn=1 or r1.prizn=2) and
r.name=r1.name

ВИСНЕТ!!!
я понимаю, что что - то не то, но как это побороть?


 
Oleg_er   (2002-06-13 15:40) [1]

а, вообще, возможно это все реализовать, а то у меня мучают смутные сомнения....


 
Delirium ©   (2002-06-13 15:52) [2]

Для MSSQL, я бы сделал так:

select name, sum(kol) as kol1, 0 as kol2 from tbl where prizn=1
group by name
union all
select id, 0 as kol1, sum(kol) as kol2 from tbl where prizn=2
group by name
order by name


 
Delirium ©   (2002-06-13 15:55) [3]

Упс... ошибочка, теперь правильно:

select name, sum(kol) as kol1, 0 as kol2 from tbl where prizn=1
group by name
union
select name, 0 as kol1, sum(kol) as kol2 from tbl where prizn=2
group by name
order by name


 
Lord Warlock ©   (2002-06-13 16:01) [4]


> Delirium © (13.06.02 15:55)

для DBase тоже годится


 
Oleg_er   (2002-06-13 16:03) [5]

не пойдет :-(
нужно что бы одновременно в двух столбцах инфа была см пример

name | kol1 | kol2
------------------
qqq1 | 21 | 23


 
Delirium ©   (2002-06-13 16:17) [6]

Не ясно, что ты хочешь получить, приведи чёткий пример исходных данных и желаемый результат работы запроса.


 
Oleg_er   (2002-06-13 16:24) [7]

исходные данные:
таблица:
kol | prizn | name
-------------------
342 | 1 | qqq
21 | 1 | qqq1
23 | 2 | qqq1
22 | 2 | qwe
нужно состряпать

name | kol1 | kol2
------------------
qqq | 342 | 0
qqq1 | 21 | 23
qwe | 0 | 22




 
Delirium ©   (2002-06-13 16:29) [8]

Опять таки, в T-SQL всё просто, обрабатываем предыдущий запрос как вложенный:

select name , Sum(Kol1) as Kol1, Sum(Kol2) as Kol2 from
(select name, sum(kol) as kol1, 0 as kol2 from tbl where prizn=1
group by name
union
select name, 0 as kol1, sum(kol) as kol2 from tbl where prizn=2
group by name) tmp
group by name


 
Val ©   (2002-06-13 16:30) [9]

сдается мне, что не судьба одним запросом на Local SQL :(


 
Lord Warlock ©   (2002-06-13 16:32) [10]


> Delirium © (13.06.02 16:29)


В LocalSql так нельзя.




 
Delirium ©   (2002-06-13 16:32) [11]

> Val

Стоит отказаться от BDE и для DBF-ов пользоваться Jet.


 
Val ©   (2002-06-13 16:44) [12]

>Delirium © (13.06.02 16:32)
вопрос неоднозначный, зависит от задач.


 
Delirium ©   (2002-06-13 16:49) [13]

Хм, естественно, однако приятнее пользоваться мощным ACCESS-овским SQL, нежели ограниченным Local SQL. И вообще, я - большой сторонник ADO :)


 
Val ©   (2002-06-13 17:09) [14]

согласитесь, что при выборе самой базы и средств работы с ней вы руководствуетесь очень многими критериями. И удобнее возможности SQL-серверов, пусть light. А в некоторых задачах, где работа с базами(тем более с локальными) минимальна, можно обойтись вообще без SQL :)
Ну, это уже отступление от самого вопроса и обычный флейм :)


 
oleg_d   (2002-06-14 11:03) [15]

а по-моему если ты из двух сразу таблиц пытаешься вытащить таким макаром информацию, то логически у тебя условие неверно, т.е. ты пытаешься связать две одинаковые таблицы по имени и тут же сравниваешь признаки 1 и 2, вообще-то во-первых надо наоборот(мне так кажется), а во-вторых что если R.prizn=2 и r1.prizn=1
но еще главная (IMHO) ошибка что в select стоит name, sum() как я помню выдает 1 результат(строку) для разных name.



Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
6-23717
Serd_hhc
2002-04-18 16:01
2002.07.08
Третий раз спрашиваю...:(


6-23698
SPeller
2002-04-23 11:58
2002.07.08
Довольно сложная тема (для меня)


1-23667
Twin
2002-06-26 13:16
2002.07.08
CMYK


1-23625
Strannic
2002-06-25 17:26
2002.07.08
Создание программной группы и иконки (ярлыка).


3-23464
AndrewK
2002-06-14 15:57
2002.07.08
Как составить запрос. Неужели это невозможно.