Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
3-23442
фл
2002-06-14 11:28
2002.07.08
local SQL запрос: выбрать 5 максимальных


1-23567
DOG-ON-RUN
2002-06-27 02:09
2002.07.08
Есть задача - Помогите пожалуйста!


3-23525
Nicolas_
2002-06-18 12:41
2002.07.08
Как заполнить combobox типами полей?


14-23758
ATLANTIDO
2002-06-03 18:49
2002.07.08
it a test


7-23808
Torry
2002-04-12 14:30
2002.07.08
Помогите воруют мыши





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский