![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]групировать еще и по номиналу