![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с SQL 2
Вика © (2004-08-17 18:13:00)Подскажите плиз SQL для осуществления следующего запроса:
select'ом выбирается (из таблицы cards) некоторое подмножество записей (использованных карточек). Теперь мне надо узнать сколько карт этого подмножества карт относится к каким дилерам (есть таблица дилеров и в cards - соответственно поле номера дилера). Как это сделать ?
Skyle (2004-08-18 10:50:00) [21]Нету возможности проверить, но может попробовать иначе?
Например
FROM Cards C, Dillers D
WHERE C.Status = 'USED' AND D.Id = C.NumDiller
Вика (2004-08-18 10:44:00) [22]> Skyle ©
Спасибо большое, что все-таки отозвались :))))
Вобщем у меня получился такой запрос:
with ReportSQL.SQL do begin
Clear;
Add('SELECT D.name, count(C.idcard) as CardsAmount ');
Add('FROM cards C ');
Add('INNER LOOP JOIN dillers D ON D.id=C.numdiller)');
Add('WHERE C.status = ' + #39 + 'USED' + #39 );
Add('AND C.statuschange IS NOT NULL ');
Add('AND (C.statuschange BETWEEN :reportDateFirst AND :reportDateLast ) ');
Add('GROUP BY C.dillernum ' );
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;
Т.е. в итого надо получить число использованных карт по каждому дилеру за какой-то период времени (выбираемый вручную) и записать все это как-то в отчет. Так вот, данный запрос выдает ошибку синтаксиса в операторе JOIN:
"Project Cards.exe raised exception class EOleExcepton with messege "[Microsoft][Драйвет ODBC Microsoft Access]Ошибка синтаксиса в операции JOIN'. Prosess stopped ..."
Skyle (2004-08-18 08:00:00) [23]
> 6] Desdechado © (17.08.04 21:10)
Чуть ниже есть та же тема, но без цифры. ;-)
2Вика: Отзовусь лучше здесь. По ночам я форум не читаю, так что не обессудьте... домохозяйка.. ;-)
По теме:
Пусть у нас есть таблица Dealers, поля Dealers.Id - номер, Dealer.Name - название дилера. В таблице Cards пусть будет поле DealerNum, которое есть ключ, связанный с Dealers.Id. Тогда запрос будет такой.
SELECT D.Name, Count(C.ID) AS CardsAmount
FROM Cards C
INNER LOOP JOIN Dealers D ON D.Id = C.DealerNum
WHERE C.Status = 'USED'
GROUP BY C.DealerNum
Desdechado (2004-08-17 21:10:00) [24]?
какая нумерация?
какая тема?
app (2004-08-17 20:48:00) [25]Оформляй тему, нумерация хороша в базах, а не темах :-)
Desdechado (2004-08-17 18:35:00) [26]эт ясно :)
яж снова направление поиска писал, а не готовый код
Соловьев (2004-08-17 18:33:00) [27]
> [2] Desdechado © (17.08.04 18:33)
связать надо как-то таблицы
Desdechado (2004-08-17 18:33:00) [28]select count(card), dealer from cards, dealers
group by dealer
Соловьев (2004-08-17 18:32:00) [29]select d.name_diler, c.name_card
from cards c join diler d on (c.fk_diler=d.pk_diler)
where c.name_card = 'bla-bla'