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

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

Помогите с SQL-запросом [D5]


Страницы:   1 2

AlexeyMir ©   (2008-08-06 09:31:00) 

Подскажите, пожалуйста, у меня есть приходные накладные TOV_IN(поля id, id_tov, price, quantity), мне нужно распечатать этикетки на весь товар который пришел, причем количество этикеток должно быть равным quantity.
Для печати этикеток я деляю SQL-запрос
select id_tov,price,quantity from TOV_IN, у меня получается
товар1   22,20   2
товар2   10,45   1
товар3   18,63   3
А как можно чтобы получать следующее?
товар1   22,20   2
товар1   22,20   2
товар2   10,45   1
товар3   18,63   3
товар3   18,63   3
товар3   18,63   3


Johnmen   (2008-08-06 14:42:00) [1]

Cлово "поддерживать" никак не связано со словом "создать" :))


Евгений Р.   (2008-08-06 14:02:00) [2]

создать одноразово, предусмотрев максимальное количество. Справочник своего рода.


Johnmen   (2008-08-06 12:56:00) [3]


> Евгений Р.   (06.08.08 12:44) [24]

А поддерживать таблицу разве можно без запросов?
:)


Евгений Р.   (2008-08-06 12:45:00) [4]

совпадушка


Евгений Р.   (2008-08-06 12:44:00) [5]


> Johnmen ©   (06.08.08 12:29) [22]

Наверное можно, используя доп.таблицу dop:
quantity
1
2
2
3
3
3
...
1000000
1000000 (миллион записей)
1000000

тогда
select id_tov,price
from TOV_IN,dop
where TOV_IN.quantity=dop.TOV_IN

но надо ли?


Medbe}I{onok XML   (2008-08-06 12:36:00) [6]

select * from mytable, my_dummy_table_with_n_record
where mytable.qtty = n
[union]
.......


Johnmen   (2008-08-06 12:29:00) [7]

Переход значения в измерение не м.б. реализован никаким сколь угодно сложным запросом.
А программно всякий сможет. Или почти всякий...:)


Ega23   (2008-08-06 12:24:00) [8]


> Ты сотвори базовыми средствами хотя бы sql'92)


Вот мне делать нечего...  :)))


Виталий Панасенко(дом)   (2008-08-06 12:11:00) [9]


> Сергей М. ©   (06.08.08 11:51) [19]

Если 2,х , то EXECUTE BLOCK


Сергей М.   (2008-08-06 11:51:00) [10]


> В виде ХП


В ХП и дурак смогет)

Ты сотвори базовыми средствами хотя бы sql'92)


Ega23   (2008-08-06 11:25:00) [11]


> Можно поинтересоваться, как все-таки такой запрос выглядит?


В виде ХП, Один цикл по начальному НД, на каждой итерации доп. цикл от 1 до Quantity.


Сергей М.   (2008-08-06 11:19:00) [12]


> AlexeyMir   (06.08.08 11:17) [16]


Ты тоже академик ?)


AlexeyMir   (2008-08-06 11:17:00) [13]

СУБД - Firebird

>В принципе, для FB, MSSQL и Postgres я такой запрос напишу.
Можно поинтересоваться, как все-таки такой запрос выглядит?


Ega23   (2008-08-06 11:05:00) [14]


> резонно было бы поинтересоваться конкретной СУБД, на которой
> преполагается реализация подобного запроса)


После этого тебя надо было бы расстрелять, т.к. это очень секретная СУБД. :)

В принципе, для FB, MSSQL и Postgres я такой запрос напишу.
Только он воистину нафик не нужен...


Виталий Панасенко(дом)   (2008-08-06 11:01:00) [15]

используй CDS и плоди записи столько раз, сколько тебе нужно. это чтобы на каждое изделие налепить?


Сергей М.   (2008-08-06 10:58:00) [16]

Из чисто академического резонно было бы поинтересоваться конкретной СУБД, на которой преполагается реализация подобного запроса)


Ega23   (2008-08-06 10:50:00) [17]


> нет ни малейшего резона тянуть с сервера явно избыточную
> инф-цию, в то время как ее расчудесно с минимальными потугами
> можно сообразить на клиентской стороне


Кто-ж спорит-то?? Я из чисто академического интереса...


Сергей М.   (2008-08-06 10:42:00) [18]


> Ega23 ©   (06.08.08 10:36) [10]


Даже если можно, нет ни малейшего резона тянуть с сервера явно избыточную инф-цию, в то время как ее расчудесно с минимальными потугами можно сообразить на клиентской стороне. Тем более что фигурирует FR, который для подобных выкрутасов предоставляет простейший управляемый прокси-дейтасет в виде UDS-компонента.


Ega23   (2008-08-06 10:36:00) [19]

Можно и SQL-запросом. С подвыподвертом.


Сергей М.   (2008-08-06 10:35:00) [20]

Вот пример :


procedure TfrmDocument.frxUDSCheckEOF(Sender: TObject; var Eof: Boolean);
begin
 Eof := CDS.Tag = 0;
end;

procedure TfrmDocument.frxUDSFirst(Sender: TObject);
begin
 CDS.First;
 if not CDS.Eof then
   CDS.Tag := CDS.FieldValues['Quantity']
 else
   CDS.Tag := 0;
end;

procedure TfrmDocument.frxUDSGetValue(const VarName: String; var Value: Variant);
begin
 Value := CDS.FieldValues[VarName];
end;

procedure TfrmDocument.frxUDSNext(Sender: TObject);
begin
 CDS.Tag := CDS.Tag - 1;
 if CDS.Tag = 0 then begin
   CDS.Next;
   if not CDS.Eof then
     CDS.Tag := CDS.FieldValues['Quantity']
   else
   CDS.Tag := 0;
 end;
end;

procedure TfrmDocument.frxUDSPrior(Sender: TObject);
begin
 CDS.Tag := CDS.Tag + 1;
 if CDS.Tag > CDS.FieldValues['Quantity'] then begin
   CDS.Prior;
   if not CDS.Bof then
     CDS.Tag := CDS.FieldValues['Quantity']
   else
     CDS.Tag := 0;
 end;
end;


Здесь CDS - любой компонент-наследник TDataSet, управляющий активным двунаправленным НД, полученным в рез-те SQL-запроса.


Страницы:   1 2

Наверх

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