powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird - Выгрузка случайных строк
8 сообщений из 33, страница 2 из 2
Firebird - Выгрузка случайных строк
    #38988328
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис П.MaratIsk,

Все лечения хранятся в бд treat(столбцы pcode,dcode,treatdate).
Все врачи хранятся в бд doctor(столбцы dcode(уникальный номер врача), fullname(ФИО))
Все пациенты хранятся в бд clients(столбцы pcode(уникальный номер пациента),fullname(ФИО),bdate,phone).

беда в том что у тебя нет уникального ID treat
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988336
Денис П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaratIsk,

предположим что есть, treatcode в таблице treat, каждое лечение имеет свой уникальный номер.
На самом деле в каждой из этих 3 таблиц более 20 столбцов, просто я выписал сюда те, с которыми есть связь.
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988350
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис П.MaratIsk,

предположим что есть, treatcode в таблице treat, каждое лечение имеет свой уникальный номер.
На самом деле в каждой из этих 3 таблиц более 20 столбцов, просто я выписал сюда те, с которыми есть связь.

уже легче )))
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988832
Денис П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал не большой Execute block.
Подскажите, как теперь мне оставить во 3 строки для каждого dcode?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
EXECUTE block
RETURNS(
  ROW_NUM INT,
  CFULLNAME TYPE OF COLUMN CLIENTS.pcode,
  FULLNAME TYPE OF COLUMN doctor.dcode
  )
AS
BEGIN
  ROW_NUM = 0;
   FOR
    select distinct d.dcode fullname, c.pcode cfullname
    from treat t
    left join (select distinct  t.dcode from treat t where t.treatdate = '18.06.2015' and t.filial = 5 order by rand () rows 30) d on  d.dcode = t.dcode -- Случайный список докторов
    left join (select distinct  t.pcode, t.dcode from treat t where t.treatdate = '18.06.2015' and t.filial = 5 ) c on  c.pcode = t.pcode -- Все пациенты
    where t.treatdate = '18.06.15' and t.filial = 5 and d.dcode is not null
            INTO :CFULLNAME,:FULLNAME
             do BEGIN
       ROW_NUM = ROW_NUM +1; -- Счетчик строк
    suspend;
  END
END
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988874
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты слова, про "вложенный FOR SELECT" мимо ушей пропустил почему?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988889
Денис П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FOR SELECT ID1,ID2 FROM TABLE1
INTO :I1,:I2 DO BEGIN

FOR SELECT ID2 FROM TABLE1
WHERE (ID1=:I1)AND(ID2<>:I2)
INTO :I3 DO BEGIN
...
END

END

я так понимаю, это вложенный for select?
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988898
Денис П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось))

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
EXECUTE block
RETURNS(

  D1 TYPE OF COLUMN DOCTOR.DCODE,
  P1 TYPE OF COLUMN CLIENTS.PCODE
  )
AS
BEGIN

    for select first 30 distinct t.dcode D1
    from treat t
    where t.treatdate between '18.06.2015' and '18.06.2015' and t.filial = 5
    order by rand()
    INTO :D1
            do
            begin
            for select c.pcode
            from treat t
            left join clients c on c.pcode = t.pcode
            where t.treatdate between '18.06.2015' and '18.06.2015' and t.dcode = :D1 and t.filial = 5
            order by c.pcode
            rows 3
            into :p1
              do
              begin

              suspend;
              end
end end
...
Рейтинг: 0 / 0
Firebird - Выгрузка случайных строк
    #38988928
Денис П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Спасибо больше за направление в нужную сторону и спасибо, что не дали готовый код. Теперь буду знаком с execute block и вложенным for select
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird - Выгрузка случайных строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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