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

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

Помогите с SQL 2


Страницы:   1 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... :(((


Страницы:   1 2

Наверх

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