|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Добрый день. Есть задачка, но не могу ее решить. Есть таблица с врачами, пациентами и лечениями. (doctor(dcode),clients(pcode),treat(dcode,pcode,treatdate)) Необходимо выгрузить 30 случайных врачей за прошлый день. Потом к каждому врачу по 3 случайных пациента. Получаю 30 случайных врачей: select first 30 distinct t.dcode from treat t where t.treatdate between :data and :data order by rand() Потом привязываю к ним всех пациентов за эту дату: select distinct d.fullname,c.fullname from (select first 30 distinct t.dcode dcode from treat t where t.treatdate between :data and :data order by rand()) doc left join doctor d on doc.dcode = d.dcode left join treat t on t.dcode = d.dcode left join (select t.pcode pcode, t.dcode dcode from treat t where t.treatdate between :data and :data ) client on client.pcode = t.pcode and client.dcode = doc.dcode left join clients c on c.pcode = client.pcode where t.treatdate between :data and :data Получается 30 врачей со всеми своими пациентами. Как мне оставить по 3 записи pcode(пациента) для каждого dcode(врача)? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 12:26 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П., бред какой-то ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 12:50 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Бред в чем, в задаче или в коде? Если в коде, не спорю, первое что пришло на ум. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 12:58 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П., в задаче ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 13:15 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Какая бы задача не была, но она есть. Необходимо для статистики получить 30 случайных врачей с 3 пациентами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 13:20 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
знаем мы эту статистику ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 13:30 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Подскажите, как мне получить желаемое? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 14:08 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
сперва нужно четко сформулировать критерии отбора этих самых записей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 14:14 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П., Ну может как-то вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 14:28 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Для чего это нужно. Клиника осуществляет прием пациентов. Руководство хочет знать отзывы от самих пациентов. Отзывы получает call-centr. Данная выгрузка нужна для call centr-а, чтобы они знали - кого им нужно обзванивать. Обзванивают они пациентов. У пациента получают информацию по клиники и по врачу, которые его принимал. Было принято решение сделать выгрузку из БД. В отчете необходимо видеть: ФИО Врача1, ФИО пациента1, телефон ФИО Врача1, ФИО пациента2, телефон ФИО врача1, ФИО пациента3, телефон ФИО Врача2, ФИО пациента1, телефон ФИО Врача2, ФИО пациента2, телефон ФИО врача2, ФИО пациента3, телефон Т.е. Для каждого врача необходимо вывести по 3 случайных пациента, которые были у него на приеме в тот день. Все лечения хранятся в бд treat(строки pcode,dcode,treatdate). Все врачи хранятся в бд doctor(строки dcode(уникальный номер врача), fullname(ФИО)) Все пациенты хранятся в бд clients(строки pcode(уникальный номер пациента),fullname(ФИО),bdate,phone). Была идея выгрузить всех врачей с пациентами за определенный день, сделать кол-во строк для каждого доктора по 3 и потом с помощью first и order by rand() отсортировать их случайно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 14:45 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П.Была идея выгрузить всех врачей с пациентами за определенный день, сделать кол-во строк для каждого доктора по 3 и потом с помощью first и order by rand() отсортировать их случайно. Отличная идея. Как раз для temp table. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 14:55 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
m7m, Спасибо что откликнулись. Я подобное пробовал, тут не получается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
З.Ы Firebird 2.5.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:03 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
pastor, Хорошо, тогда подскажите пожалуйста по поводу автор сделать кол-во строк для каждого доктора по 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:06 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П.не получается Ну так перестань впихивать невпихуемое и пиши простенький Execute Block с тривиальным вложенным FOR SELECT. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:12 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П., Ну да действительно ругается значит так не судьба зы. тогда прислушайся к совету Dimitry Sibiryakov ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:22 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П., SELECT d.dcode, c.pcode FROM treat t JOIN (SELECT dcode FROM doctor ORDER BY UUID_TO_CHAR(GEN_UUID()) ROWS 30) d ON d.dcode = t.dcode JOIN (SELECT pcode FROM clients ORDER BY UUID_TO_CHAR(GEN_UUID()) ROWS 3) c ON c.dcode = d.dcode WHERE t.treatdate between :data and :data вроде так ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:25 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спасибо, будем пробовать. Если вас не затруднит не большой шаблон, пример или направление куда копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:32 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
MaratIsk, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:33 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П.MaratIsk, Код: sql 1. 2. 3. 4. 5.
хорошо а где еще pcode ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:37 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П.Если вас не затруднит не большой шаблон, пример или направление куда копать. Это надо понимать как "документацию я не читал и не собираюсь, дайте готовый код чтобы его можно было скопипастить"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:39 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
MaratIsk, Все лечения хранятся в бд treat(столбцы pcode,dcode,treatdate). Все врачи хранятся в бд doctor(столбцы dcode(уникальный номер врача), fullname(ФИО)) Все пациенты хранятся в бд clients(столбцы pcode(уникальный номер пациента),fullname(ФИО),bdate,phone). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:40 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Готовый я не прошу, т.к. пока сам не напишешь, никогда не научишься. Не большой пример, алгоритм, последовательность, мб операторы которые пригодятся. Даже хороший help подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:42 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Hello, Денис П.! You wrote on 19 июня 2015 г. 15:52:16: Денис П.> Даже хороший help подойдет. http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird_Language_Reference_RUS.pdf Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:52 |
|
Firebird - Выгрузка случайных строк
|
|||
---|---|---|---|
#18+
Денис П.Даже хороший help подойдет. А официальный Language Reference для тебя недостаточно хорош?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 15:54 |
|
|
start [/forum/topic.php?fid=40&fpage=75&tid=1562767]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
31ms |
get forum data: |
3ms |
get page messages: |
143ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 292ms |
0 / 0 |