|
Можно ли запросом или только перебором?
|
|||
---|---|---|---|
#18+
Есть таблицы "фамилии" "имена" "отчества". Из них рандомно выбирается ФИО. Но оно не должно повторяться, так что есть четвертая таблица вида id_фамилии,id_имени,id_отчества , в которой собственно перечислены ранее выбранные комбинации. Вопрос в том, можно ли запросом получить список фамилий, для которых еще есть хотя бы одно неиспользованное сочетание ФИО? (а затем по фамилии такой же список имен, а по фамилии-имени отчеств) или только перебором? ЗЫ. Содержимое таблиц может меняться, так что квази-рандомные переборщики с запоминанием последнего индекса не подойдут. Без базы, думаю, не обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 19:51 |
|
Можно ли запросом или только перебором?
|
|||
---|---|---|---|
#18+
Что вы курите? Хотя.... Помниться еще в древнейшей игрушке на ZX Spectrum, под названием Elite делались случайные имена звезд. И все были уникальными. Делается это на самом деле элементарно. Берутся например три байта. Каждый из них, естественно, может быть от 0 до 255. Значит делаем 256 имен, 256 фамилий, 256 отчеств. Берем случайное число в трехбайтном диапазоне - вот вам и совершенно уникальная тройка. Чтобы не повторялось - да, надо будет вести список какие числа уже выпадали, так что либо булевый массив с O(1) эффективностью, но память сожрет, либо действительно таблица с простейшим индексом (и будет у вас O(logN) зато с памятью проблем не будет). Если хочется, можно брать не восьми-битные индексы для составных частей а какие-нибудь другие. Или, с учетом что имен личных не так много как фамилий, можно под имена отдать например 5 бит, а под фамилии все 16 (ну насколько фантазии у вас хватит). Модератор: Тема перенесена из форума "SQLite". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 00:11 |
|
Можно ли запросом или только перебором?
|
|||
---|---|---|---|
#18+
iskatelsql Вопрос в том, можно ли запросом получить список фамилий, для которых еще есть хотя бы одно неиспользованное сочетание ФИО? Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 03:10 |
|
Можно ли запросом или только перебором?
|
|||
---|---|---|---|
#18+
iskatelsql можно ли запросом получить список фамилий, для которых еще есть хотя бы одно неиспользованное сочетание ФИО? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Предполагается, что ни в одной таблице нет дубликатов, а также что в каждой из таблиц Имена и Отчества есть минимум по 2 записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 07:44 |
|
Можно ли запросом или только перебором?
|
|||
---|---|---|---|
#18+
iskatelsql Есть таблицы "фамилии" "имена" "отчества". Из них рандомно выбирается ФИО. Но оно не должно повторяться, так что есть четвертая таблица вида id_фамилии,id_имени,id_отчества , в которой собственно перечислены ранее выбранные комбинации. Вопрос в том, можно ли запросом получить список фамилий, для которых еще есть хотя бы одно неиспользованное сочетание ФИО? (а затем по фамилии такой же список имен, а по фамилии-имени отчеств) или только перебором? ЗЫ. Содержимое таблиц может меняться, так что квази-рандомные переборщики с запоминанием последнего индекса не подойдут. Без базы, думаю, не обойтись. Если таблицы без повторов, то все возможные комбинации это декартово произведение, т.е. произведение количества записей в каждой таблице. Считаешь произведение количеств имен и отчеств (XXX) и выбираешь фамилии по которым меньше Код: sql 1.
если будешь делать выборку недостающих по каждой фамилии, то есть смысл сохранить все варианты в отдельную таблицу, если разово, то вставь подзапросом Код: plaintext 1.
и выбирать так Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 09:50 |
|
|
start [/forum/topic.php?fid=16&msg=40064078&tid=1339672]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 510ms |
0 / 0 |