![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с SQL 2
Вика © (2004-08-17 18:13:00)Подскажите плиз SQL для осуществления следующего запроса:
select'ом выбирается (из таблицы cards) некоторое подмножество записей (использованных карточек). Теперь мне надо узнать сколько карт этого подмножества карт относится к каким дилерам (есть таблица дилеров и в cards - соответственно поле номера дилера). Как это сделать ?
Anatoly Podgoretsky (2004-08-18 16:24:00) [1]Вика (18.08.04 16:02) [27]
Так надо, что бы тема была не SQL n, а описывала проблему.
Например для последнего вопроса, как перемещаться по полученого набора данных
Соловьев (2004-08-18 16:04:00) [2]
> Если юзать ReportSQL.Next, то распечатывает 2 раза последнюю
> запись.
while not ReportSQL.Eof do begin
//чего-то творим
ReportSQL.Next;
end;
Вика (2004-08-18 16:02:00) [3]"Помогите с SQL 3" не последует ... nto to be continued :)))
Я лучше в этой теме последний вопросик задам, если позволите:
как в цикле вывести в один столбец имена дилеров, а во второй число карт (cardsAmount). Я отчет делаю в Excel. Одну запись я знаю как возвращать: ReportSQL.FieldByName('name').AsString; а как в цикле перемещаться по полям и по записям?
Если юзать ReportSQL.Next, то распечатывает 2 раза последнюю запись.
Заранее thanx...
Соловьев (2004-08-18 12:53:00) [4]
> Осталось только как-то эту результирующую таблицу "засунуть
> в отчет" (что я тоже не заню как делать :((( ) ...
http://www.delphikingdom.com/asp/itemq.asp?mode=1&itemid=3
Skyle (2004-08-18 12:51:00) [5]
> Осталось только
"Помогите с SQL -3". Coming soon...;-)
Вика (2004-08-18 12:46:00) [6]Соловьев © и Skyle © Спасибо Вам огромное за помощь. Сама бы я сроду не разобралась с этим SQL... Все заработало :))))
Осталось только как-то эту результирующую таблицу "засунуть в отчет" (что я тоже не заню как делать :((( ) ...
Соловьев (2004-08-18 12:28:00) [7]
>
> 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 C.dillernum;
GROUP BY D.name
Вика (2004-08-18 12:26:00) [8]SQL 2 (предложенный Skyle © ):
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 C.dillernum;
"Попытка выполнить запрос, который не включает указанное выражение 'name' как часть функции или группы"
Соловьев (2004-08-18 12:25:00) [9]там можно создать запрос вызуально. попробуйте соединить таблицы с помощью мышки(а потом посмотреть запрос в виде SQL)
Вика (2004-08-18 12:23:00) [10]Запустила Access -> SQL:
SELECT D.name, C.status
FROM cards AS C
JOIN dillers AS D ON (C.numdiller=D.id)
WHERE C.status = 'ИСПОЛЬЗОВАНА'
AND C.statuschange IS NOT NUL;
"Ошибка синтаксиса в предложении FROM"
Соловьев (2004-08-18 11:16:00) [11]запустите ацес и создайте там этот запрос. я лично всегда там отлаживаю, а потом переношу на клиента.
Вика (2004-08-18 11:14:00) [12]Это мне тоже кто-то подсказал вместо status='USED', когда такая конструкция (status='USED') не работала...
Соловьев (2004-08-18 11:13:00) [13]
> Add('WHERE C.status = ' + #39 + 'USED' + #39 );
а почему тут параметр не используете?
Вика (2004-08-18 11:12:00) [14]INNER оставила, LOOP убрала, такая же ерунда...
А на запрос, который мне подсказал Соловьев © (17.08.04 18:32) [1] т.е. мой Вика (18.08.04 11:06) [14] уже выдается ошибка синтаксиса, но в операторе FROM ...
:((((((((((((((
Skyle (2004-08-18 11:08:00) [15]
> Соловьев © (18.08.04 11:05)
А я не тебе, я в
> [8] Вика (18.08.04 10:44)
:-)))
> [14] Вика (18.08.04 11:06)
Возможно ругается на отсутствие типа объединения?
> Add('JOIN dillers D ON (C.numdiller=D.id) ');
Может INNER всё-таки оставить? Не знаю, что там по дефолту и есть ли он, этот дефолт..
Вика (2004-08-18 11:06:00) [16]2 Соловьев © [11]
with ReportSQL.SQL do begin
Clear;
Add('SELECT D.name, C.status ');
Add('FROM cards C ');
Add('JOIN dillers D ON (C.numdiller=D.id) ');
Add('WHERE C.status = ' + #39 + 'USED' + #39 );
Add('AND C.statuschange IS NOT NULL ');
Add('AND (C.statuschange BETWEEN :reportDateFirst AND :reportDateLast ) ');
Parameters.ParseSQL(SQL.Text, True);
Parameters.ParamByName('reportDateFirst').Value := ReportDateBegin.Date;
Parameters.ParamByName('reportDateLast').Value := ReportDateEnd.Date;
end;
try
Open;
except
on E:Exception do ShowMessage(E.Message);
end;
Соловьев (2004-08-18 11:05:00) [17]
> Возможно всё проще и Access не понимает хинта LOOP.
так у меня и нету его:)
Skyle (2004-08-18 11:02:00) [18]
> Соловьев © (18.08.04 10:59)
Возможно всё проще и Access не понимает хинта LOOP.
2Вика: а если убрать LOOP заработает?
Соловьев (2004-08-18 10:59:00) [19]
> Такой запрос тоже пробовала и таже самая ошибка синтаксиса
> в операторе JOIN... :(((
полный текст запроса плиз.
Вика (2004-08-18 10:58:00) [20]2 Соловьев © [1]
Такой запрос тоже пробовала и таже самая ошибка синтаксиса в операторе JOIN... :(((