powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос sql
25 сообщений из 28, страница 1 из 2
Помогите составить запрос sql
    #32463633
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые мастера !

Ни ка не могу справиться с задачей.

есть таблица
T1

name dt ev
--------------------------------------------
Иванов |30.03.2004 9:00 |7
Иванов |30.03.2004 10:00 |8

подскажите как получить из нее одной с помощю одного запроса
такую:

name dt1 ev1 dt2 ev2
----------------------------------------------------------
Иванов |30.03.2004 9:00 | 7 |30.03.2004 10:00 |8
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463678
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что, если записей про Петрова не две, а три, то выходных полей уже не 5, а 7 будет?

Нельзя. Если только через вычисляемые (на сервере) поля и хранимые процедуры.
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463700
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да нет

записей дествительно больше,
но они обязательно повторяются с 7 и 8.
Тогда будет:


name dt1 ev1 dt2 ev2
----------------------------------------------------------
Иванов |30.03.2004 9:00 | 7 |30.03.2004 10:00 |8
Иванов |30.03.2004 10:50| 7 |30.03.2004 11:00 |8

А если с ХП то ка организовать?
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463703
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да нет

записей дествительно больше,
но они обязательно повторяются с 7 и 8.
Тогда будет:


name dt1 ev1 dt2 ev2
----------------------------------------------------------
Иванов |30.03.2004 9:00 | 7 |30.03.2004 10:00 |8
Иванов |30.03.2004 10:50| 7 |30.03.2004 11:00 |8

А если с ХП то ка организовать?
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463713
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
select name, max(case ev when  7  then dt end) as dt7,
max(case ev when  8  then dt end) as dt8
from T!
group by name
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463851
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select name, max(case ev when 7 then dt end) as dt7,
max(case ev when 8 then dt end) as dt8
from T!
group by name


на это место ругается, ошибка синтаксиса, пропущен оператор?
из-за чего
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463860
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замени "T!" на "T1"
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463885
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
case ev when

Причем здесь Т! и Т1
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463896
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, у тебя не FB 1.5?
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463931
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, у меня запрос в delphi через IBQuery
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463944
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сервер какой? InterBase/Yaffil/FireBird ?

2. Если через BDE, то, возможно, он на клиенте проверяет скрипт, и просто не знает конструкции CASE
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463946
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня FB 1.5 стоит
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32463958
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер InterBase
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464268
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та IB или FB?
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464272
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он прикалывается!
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464285
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vi007Причем здесь Т! и Т1
У тебя таблица T1 называется, а у нее поле EV .
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464290
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по серверу надо как-то определится :)
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464812
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дак че, ни кто ни может помочь?

сервер FB 1.5
клиента пишу на delphi 6
запрос надо сделать через IBQuery

Помогите же ламеру в IB и FB!
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32464880
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй UDF DtIf из библиотеки rFunc. Вместо:
select name, max(case ev when 7 then dt end) as dt7,

max(case ev when 8 then dt end) as dt8

from T!

group by name

сделай так:

select name, max(DtIf (ev-7, '01.01.1900 00:00:00', cast(dt as TIMESTAMP))) as dt7,
max(DtIf (ev-8, '01.01.1900 00:00:00', cast(dt as TIMESTAMP))) as dt8
from T!
group by name
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465263
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
че то ни как не получается...

Еще есть проблема.
По кнопке
делаю запрос и с помощю цикла добавляю данные в
другую таблицу.

for s:=0 to t.IBDataSet1.RecordCount do
begin
t.Table1.Append;
t.Table1CLI_N.Text:=Uchet.IBDataSet1CLI_N.Text;
t.Table1F_NAME.Text:=Uchet.IBDataSet1F_NAME.Text;
t.Table1DT.Text:=Uchet.IBDataSet1DT.Text;
t.Table1EV_TEXT.Text:=Uchet.IBDataSet1EV_TEXT.Text;
t.Table1EV_N.Text:=Uchet.IBDataSet1EV_N.Text;
t.Table1TMEND.Text:=Uchet.IBDataSet1TMEND.Text;
t.Table1TMBEG.Text:=Uchet.IBDataSet1TMBEG.Text;
t.Table1.Post;
t.IBDataSet1.Next;
end;

При выполнении добавляются две три строки
при повторном - еще строк пять, далее строк двадцать...

вчем же дело?
Подозреваю с транзакцией... но что?
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465317
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Что выдает при попытке выполнить запрос.
2. for s:=0 to t.IBDataSet1.RecordCount do.
Так никто не делает, поскольку кол. запсей часто бывает неизвестно (почему, почитай в Help). Надо так:
t.IBDataSet1.First; while not t.IBDataSet1.Eof do
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465350
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед
for s:=0 to t.IBDataSet1.RecordCount do поставь
t.IBDataSet1.FetchAll;

Т.к. RecordCount не выдает нормально кол-во записей без вызова FetchAll ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465363
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но таким способом (как я написал) лучше пользоваться, когда ты точно уверен, что записей у тебя не очень много. Иначе будут кранты ...
Лучше делать так, как написал FreemanZAV

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465403
vi007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРА !!!!!!!!
В ТОЧКУ!!!!
ВСЕ ЗАРАБОТАЛО!!!!

СПАСИБО.

FreemanZAV
t.IBDataSet1.First; while not t.IBDataSet1.Eof do

А вот еще:)

поле DT типа timeshtamp
в нем дата и время.
как конвертнуть во время?
просто ни когда не встречался я с таким:(
...
Рейтинг: 0 / 0
Помогите составить запрос sql
    #32465419
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cast( Dt as time)
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос sql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]