Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL-запрос ??? [D6, MS Access]


vicky ©   (2004-08-20 10:51:00) 

Подскажите плиз что надо добавить в запрос, который выдет число активированных карт каждого дилера, чтобы он выдавал еще число карт каждого номинала. Т.е. есть запрос:

SELECT D.name, count(C.idcard) AS CardsAmount
FROM cards AS C INNER JOIN dillers AS D ON D.id=C.numdiller
WHERE C.status='ИСПОЛЬЗОВАНА' And C.statuschange Is Not Null
GROUP BY D.name;

Выдает он данные типа:
Дилер1  3
Дилер2  8

где {3,8} общее число карт, а надо чтобы он это число разбивал по номиналу т.е. 3   1-5
                 2-10
             8   2-5
                 4-20
                 2-10  
(таблица cards:
idcard
seria
nominal
status
numdiller
statuschange)


Sandman25   (2004-08-20 12:39:00) [1]

>Но как устрагить повторы

Неужели это не очевидно? Сравнив текущего дилера с предыдущим.


vicky   (2004-08-20 12:37:00) [2]

2 Соловьев ©   (20.08.04 12:16) [12]
А если не трудно, так подскажите ...


vicky   (2004-08-20 12:24:00) [3]

2 Sandman25 © [11]

Отчет у меня выводится в Excel :

while not SQL.Eof do begin
   XLApp.WorkBooks[1].WorkSheets[1].Cells[11+i,2] := Fields[0].AsString;
   XLApp.WorkBooks[1].WorkSheets[1].Cells[11+i,4] := Fields[1].AsString;
   XLApp.WorkBooks[1].WorkSheets[1].Cells[11+i,5] := Fields[2].AsString;
   i:=i+1;
   Next;
end;


??? Но как устрагить повторы и суммировать обшее число на кадого дилера я по-прежнему не знаю :(((


Sandman25   (2004-08-20 12:16:00) [4]

[10] vicky ©   (20.08.04 12:13)

Данная задача принципиально отличается от предыдущей. И должна решаться не только запросом, но и средством получения отчетов.


Соловьев   (2004-08-20 12:16:00) [5]


> Вам что трудно подсказать домохозяйке :))) которая плохо
> шарит в делфи ???

нет, не трудно
А зачем домохозяйке шарить в делфи? причем про дилеров что-то :) Вы там что наркотиками торгуете?


vicky   (2004-08-20 12:13:00) [6]

А раз Вы знаете, Вам что трудно подсказать домохозяйке :))) которая плохо шарит в делфи ???


Соловьев   (2004-08-20 11:53:00) [7]

Девушка, ну надо хоть чуть-чуть подумать... ну нельзя же так.


vicky   (2004-08-20 11:50:00) [8]

Результат:
name                CardsAmount nominal
ПБОЮЛ Дилер1         1         5
ПБОЮЛ Дилер1         1          10
ПБОЮЛ Дилер2         1         5
ПБОЮЛ Дилер2         1         10

Thanx...А как теперь вывести в отчет, так чтобы имя дилера повторялось только один раз и суммировалось все-таки общее число карт каждого дилера, т.е. типа:
name                CardsAmount nominal
ПБОЮЛ Дилер1         2         5
                             10
ПБОЮЛ Дилер2         2         5
                             10
???


vicky   (2004-08-20 11:28:00) [9]

SELECT D.name,  count(C.nominal) AS numNominal
FROM cards AS C INNER JOIN dillers AS D ON D.id=C.numdiller
WHERE C.status='ИСПОЛЬЗОВАНА' And C.statuschange Is Not Null
GROUP BY D.name, C.nominal;

Тоже ерунда получается :(((
name      NumNominal
дилер1     2            
дилер2     2


Sandman25   (2004-08-20 11:28:00) [10]

SELECT D.name,  count(*) AS CardsAmount, C.nominal


vicky   (2004-08-20 11:23:00) [11]


SELECT D.name,  count(C.idcard) AS CardsAmount, count(C.nominal) AS numNominal
FROM cards AS C INNER JOIN dillers AS D ON D.id=C.numdiller
WHERE C.status='ИСПОЛЬЗОВАНА' And C.statuschange Is Not Null
GROUP BY D.name, C.nominal;


не помогло... выставила у все активированных карт один номинал (5), а запрос выдает:
name    CardsAmount   NumNominal
дилер1     2             2
дилер2     2             2


Sandman25   (2004-08-20 11:18:00) [12]

count(*)


Соловьев   (2004-08-20 11:16:00) [13]


> count(C.idcard)

count(C.nominal)


vicky   (2004-08-20 11:14:00) [14]

Как ?
Если так:

SELECT D.name,  count(C.idcard) AS CardsAmount, C.nominal
FROM cards AS C INNER JOIN dillers AS D ON D.id=C.numdiller
WHERE C.status='ИСПОЛЬЗОВАНА' And C.statuschange Is Not Null
GROUP BY D.name, C.nominal;

то результирующая выборка данных:

name    CardsAmount   nominal
дилер1     2             5
дилер2     2             5

тогда как у дилера 2 2 номинала, например ...
???


Соловьев   (2004-08-20 10:55:00) [15]

групировать еще и по номиналу


Наверх

Титульная страница Поиск, карта сайта Написать письмо