powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Уникально идентифицировать набор значений
43 сообщений из 43, показаны все 2 страниц
Уникально идентифицировать набор значений
    #34442176
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как уникально идентифицировать набор значений, без их порядка?
Потому что если есть таблица со значениями 1-2-3-4-5-6-7-8-9, то мне нужно, чтобы 1-2 и 2-1 - сохранялись в другой таблице с одним идентификатором, 2-3-8, 8-2-3 - с другим...
Чтобы задав в SELECT <вторая таблица> выражение IN(<идентификаторы первой таблицы> - я бы получил однозначный идентификатор из второй для данного набора идентификаторов в выражении IN, вне зависимости от их порядка.
Количество значений в наборе - произвольное, количество возможных самих элементов наборов - тоже произвольное.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442259
Думающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAE есть таблица со значениями 1-2-3-4-5-6-7-8-9
Это что за значения то? Это в одном полей все или это разные столбцы/строки?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442262
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это строки одной таблицы!
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442419
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так у тебя набор строк из другой таблицы должен быть произвольным или набор значений по определённому полю??

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442468
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAEПодскажите, как уникально идентифицировать набор значений, без их порядка?
Потому что если есть таблица со значениями 1-2-3-4-5-6-7-8-9, то мне нужно, чтобы 1-2 и 2-1 - сохранялись в другой таблице с одним идентификатором, 2-3-8, 8-2-3 - с другим...
Чтобы задав в SELECT <вторая таблица> выражение IN(<идентификаторы первой таблицы> - я бы получил однозначный идентификатор из второй для данного набора идентификаторов в выражении IN, вне зависимости от их порядка.
Количество значений в наборе - произвольное, количество возможных самих элементов наборов - тоже произвольное.Прочитал ваш пост три раза. Ничего не понял. Вы можете четко объяснить задачу, или вас ответ совершенно не интересует?

P.S. Просто удивительно, как часто люди, просящие совета, надеются на телепатию читателей, вместо максимально понятной постановки задачи... Или это просто лень?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442524
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он сам, как мне кажется ничего не понимает. это он пробует построить модель какую-то
читайте http://]http://www.sql.ru/forum/actualthread.aspx?tid=415375

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442544
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может короче если получится - то будет понятнее?

Есть одна таблица T1, где есть одно поле id. Мне нужно сделать так, чтобы НАБОРАМ id этой таблицы соответствовало число... Для моей задачи - нужна таблица вероятностей наборов id. Вероятность набора (1, 2) - 0.02, вероятность набора (2, 7, 8) - 0.19, вероятность набора (7,4, 9, 1) - 0.24.

Как спроектировать базу данных?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442631
Кхе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AXAEКак спроектировать базу данных?
Может стоить прочесть пару книжек по проектированию, некоторые простейшие вопросы отпадут
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442637
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное опять неправильно объяснил...
Ну хорошо. Тогда что есть и что надо:
Есть таблица со значениями:
Код: plaintext
1.
2.
3.
4.
5.
| i |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

Мне нужна таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
набор        | вероятность
-------------+---------
(1, 2)       | 0.023
 (3, 5, 4)    | 0.039 
(1, 5)       | 0.31
(5, 3, 1)    | 0.21
(4, 2, 5, 1) | 0.0013
 (4, 3, 5)    | 0.039 
Заметки: помеченные жирным - это строки, у которых вероятность должна быть одинаковой - набор чисел один и тот же. Вероятность никак не связана с самими числами в наборе, только с содержимым набора (не вычисляется, а просто задается).

Каким образом это сделать?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442671
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кхе AXAEКак спроектировать базу данных?
Может стоить прочесть пару книжек по проектированию, некоторые простейшие вопросы отпадут

Пытался... Бесполезно, либо я интуитивно проектирую базы данных, либо мне нужно переквалифицироваться... Я просто не понимаю, о чем там пишут((( При этом интуитивное проектирование, составление структуры базы данных, составление запросов дается легко. До некоторых пределов разумеется: большую структуру сложно вообразить. Я думаю, когда упрусь наконец в непреодолимую стену, тогда можно будет и остановиться. Авторы книжек ведь тоже все это себе представляли (однако их термины насчет понятий в проектировании являются собственными, да еще и с красивыми, но туманными определениями, из-за чего их сложно понять) - почему же я не могу дойти до того же самого?
Если бы все было понятно в книжках - совершенно бы отпала надобность в форумах по проектированию... Верно?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442712
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melaniон сам, как мне кажется ничего не понимает. это он пробует построить модель какую-то
читайте http://]http://www.sql.ru/forum/actualthread.aspx?tid=415375

Улыбайтесь чаще, людей это раздражает.

Нет, эти мои два вопроса никак не связаны...
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442716
Кхе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AXAE
Если бы все было понятно в книжках - совершенно бы отпала надобность в форумах по проектированию... Верно?
Я не к тому это сказал, просто на форуму вам врятли подробно распишут азы проектирования, а понимания у вас я пока не вижу, просто совет был.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442733
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кхе AXAE
Если бы все было понятно в книжках - совершенно бы отпала надобность в форумах по проектированию... Верно?
Я не к тому это сказал, просто на форуму вам врятли подробно распишут азы проектирования, а понимания у вас я пока не вижу, просто совет был.

Ну да, азы проектирования не распишут... Но хоть сказали бы прямо: "эта задача с идентификацией наборов - элементарнейшая и разобрана <линк>" Или хотя бы без линка. Или просто бы сказали, что им мой вопрос не интересен и они не хотят понять меня((
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442777
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотим понять. вот и пытаемся. и спрашиваем наводящие вопросы. и тебя пытаемся навести куда нужно.
я вот просто в оракле бд проектирую. и там таблицу с полем - набор идентификаторов можно сотавить без проблем. и сравнивать строки такие без проблем через соответствующую функцию.
а вот как тебе помочь не знаю.

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442797
Кхе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AXAEНо хоть сказали бы прямо: "эта задача с идентификацией наборов - элементарнейшая и разобрана <линк>"
Вам бы уже давно помогли, если бы описали то что хотите на понятном языке. Пока вас видимо никто не понял
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442861
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melaniхотим понять. вот и пытаемся. и спрашиваем наводящие вопросы. и тебя пытаемся навести куда нужно.
я вот просто в оракле бд проектирую. и там таблицу с полем - набор идентификаторов можно сотавить без проблем. и сравнивать строки такие без проблем через соответствующую функцию.
а вот как тебе помочь не знаю.

Улыбайтесь чаще, людей это раздражает.

Значит тип данных такой есть в оракле?!
Тогда понятно... На MySQL такого типа данных нету((
А в какой машине баз данных еще есть поля типа "набор"?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442884
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему на MySql нету?? а что-то типа ассоциативного массива??

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442899
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melaniпочему на MySql нету?? а что-то типа ассоциативного массива??

Улыбайтесь чаще, людей это раздражает.

Нету... Там есть INTEGER, CHAR, DECIMAL, TEXT, BINARY, GEOMETRY, BLOB, SET, ENUM и еще куча других - но ассоциативного нету(((
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442956
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда сделай так. может подойдёт...

1-я табличка
id строки
1
2
3
...
N

2-я табличка
id набора id строки из 1-й табл.
1 1
1 2
2 1
2 2
2 3

3-я табличка
id набора значение
1 0.19
2 0.35


запрос проверки входимости идентификатора в опред-й набор делай по 2-й табличке.

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34442997
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melani
Идею понял... Очень хорошо. Спасибо!
А еще не подскажете как быть с тем, что (1, 2) и (1, 2, 3) - разные наборы, а я передаю в запрос например ...IN (1,2)? Запрос ведь выдаст и (1, 2) и (1, 2, 3)? Как исключить частичные вхождения?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443053
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAE Melani
Идею понял... Очень хорошо. Спасибо!
А еще не подскажете как быть с тем, что (1, 2) и (1, 2, 3) - разные наборы, а я передаю в запрос например ...IN (1,2)? Запрос ведь выдаст и (1, 2) и (1, 2, 3)? Как исключить частичные вхождения?
Нет похоже ты не понял ничего, хотя тебе разжевали так что дальше некуда.
Тебе "in" уже вообще не нужен у тебя должно быть в запросе "= id набора"
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443064
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну проверяй на наличие только тех элементов, которые нужны. а остальные исключай.
т.е. исключай такие наборы данных, в кот. им-ся ещё другие идентификаторы.

Улыбайтесь чаще, людей это раздражает.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443102
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDen AXAE Melani
Идею понял... Очень хорошо. Спасибо!
А еще не подскажете как быть с тем, что (1, 2) и (1, 2, 3) - разные наборы, а я передаю в запрос например ...IN (1,2)? Запрос ведь выдаст и (1, 2) и (1, 2, 3)? Как исключить частичные вхождения?
Нет похоже ты не понял ничего, хотя тебе разжевали так что дальше некуда.
Тебе "in" уже вообще не нужен у тебя должно быть в запросе "= id набора"

Э, нет... Как это не нужен??? На входе запроса только элементы. Где я возьму-то id нужного набора, если мне только элементы известны? Это уже каким-то образом запрос надо составить так, чтобы по элементам, которые я передам в запрос мне база выдала вероятность именно такого СОЧЕТАНИЯ (термин из комбинаторики) элементов.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443119
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melaniну проверяй на наличие только тех элементов, которые нужны. а остальные исключай.
т.е. исключай такие наборы данных, в кот. им-ся ещё другие идентификаторы.

Об этом я и подумал, но я пока не могу представить, какой запрос будет, но обсуждение этого уже будет оффтопиком((

Спасибо еще раз!!
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443230
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select id набора as X
from Таб.2
where id идентиф-ра in (...)
and not exists (select id идентиф-ра
from Таб.2
where id идентиф-ра not in (...)
and id набора = X)

только вот не знаю для MySql покатит??
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443529
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно немного другим путем пойти, например чтобы найти набор (1,2):
найти пересечение, т.е. найти все наборы где присутствуют числа и 1 и 2,
а потом из них найти тот набор который содержит два числа.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443546
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDenМожно немного другим путем пойти, например чтобы найти набор (1,2):
найти пересечение, т.е. найти все наборы где присутствуют числа и 1 и 2,
а потом из них найти тот набор который содержит два числа.
Проблема в том, что... Хотя можно ли передавать количество чисел? (1,2) - это лишь частный случай. На самом деле в скобках может быть произвольное количество записей.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443637
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAE OraDenМожно немного другим путем пойти, например чтобы найти набор (1,2):
найти пересечение, т.е. найти все наборы где присутствуют числа и 1 и 2,
а потом из них найти тот набор который содержит два числа.
Проблема в том, что... Хотя можно ли передавать количество чисел? (1,2) - это лишь частный случай. На самом деле в скобках может быть произвольное количество записей.
А как ты, то что в скобках вообще передаешь, если динамически собираешь select
то почему нельзя количество указать? Короче если хочешь четкие ответы, то постарайся
четко описывать что тебе нужно :)
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443745
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAEНаверное опять неправильно объяснил...
Ну хорошо. Тогда что есть и что надо:
Есть таблица со значениями:
Код: plaintext
1.
2.
3.
4.
5.
| i |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

Мне нужна таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
набор        | вероятность
-------------+---------
(1, 2)       | 0.023
 (3, 5, 4)    | 0.039 
(1, 5)       | 0.31
(5, 3, 1)    | 0.21
(4, 2, 5, 1) | 0.0013
 (4, 3, 5)    | 0.039 
Заметки: помеченные жирным - это строки, у которых вероятность должна быть одинаковой - набор чисел один и тот же. Вероятность никак не связана с самими числами в наборе, только с содержимым набора (не вычисляется, а просто задается).

Каким образом это сделать?
Код: plaintext
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
create table #t1 ( 
  id_t1 int IDENTITY( 1 , 1 ) primary key, s varchar( 100 ) 
)
go
create table #t2 ( 
  id_t2 int primary key,  probability dec(  4 , 3 )
)
go
create table #t3 ( 
  id_t1 int foreign key references #t1,  
  id_t2 int foreign key references #t2
   
  primary key(id_t1, id_t2) 
)
go
--------Заполняем #t1
insert into #t1 (s)
select top  10  name from sysobjects

--------Заполняем #t2
insert into #t2 ( id_t2, probability ) values(  1 ,  0 . 023  )
insert into #t2 ( id_t2, probability ) values(  2 ,  0 . 039  )
insert into #t2 ( id_t2, probability ) values(  3 ,  0 . 31  )

--------Заполняем #t3
--insert sequence (1, 2)
insert into #t3 ( id_t2, id_t1 ) values(  1 ,  1  )
insert into #t3 ( id_t2, id_t1 ) values(  1 ,  2  )

--insert sequence (3, 4, 5)
insert into #t3 ( id_t2, id_t1 ) values(  2 ,  3  )
insert into #t3 ( id_t2, id_t1 ) values(  2 ,  4  )
insert into #t3 ( id_t2, id_t1 ) values(  2 ,  5  )

--insert sequence (1, 5)
insert into #t3 ( id_t2, id_t1 ) values(  3 ,  1  )
insert into #t3 ( id_t2, id_t1 ) values(  3 ,  5  )

Содержимое исходных таблиц:
Код: plaintext
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.
30.
31.
32.
33.
34.
select id_t1 from #t1

id_t1       
----------- 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 

select * from #t2

id_t2       probability 
----------- ----------- 
 1            . 023 
 2            . 039 
 3            . 310 

select * from #t3

id_t1       id_t2       
----------- ----------- 
 1             1 
 1             3 
 2             1 
 3             2 
 4             2 
 5             2 
 5             3 
Выборка вероятности для набора (1, 2)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
  '(1, 2)' as "set",
  MIN(probability) as probability
from 
 #t2 join #t3 on #t2.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 1 ,  2 )
group by #t2.id_t2
having count(*) =  2 

set    probability 
------ ----------- 
( 1 ,  2 ) . 023  

Выборка вероятности для набора (3, 4, 5)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
  '(3, 4, 5)' as "set",
  MIN(probability) as probability
from 
 #t2 join #t3 on #t2.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 3 ,  4 ,  5 )
group by #t2.id_t2
having count(*) =  3 

set       probability 
--------- ----------- 
( 3 ,  4 ,  5 ) . 039  

Проверка: выборка вероятности для набора (4, 3, 5), т.е. с другим порядком
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
  '(4, 3, 5)' as "set",
  MIN(probability) as probability
from 
 #t2 join #t3 on #t2.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 4 ,  3 ,  5 )
group by #t2.id_t2
having count(*) =  3 

set       probability 
--------- ----------- 
( 4 ,  3 ,  5 ) . 039  

Выборка вероятности для набора (1, 5)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
  '(1, 5)' as "set",
  MIN(probability) as probability
from 
 #t2 join #t3 on #t2.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 1 ,  5 )
group by #t2.id_t2
having count(*) =  2 

set    probability 
------ ----------- 
( 1 ,  5 ) . 310  
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34443993
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to mir

а если добавить:
Код: plaintext
1.
2.
3.
4.
5.
6.
insert into #t2 ( id_t2, probability ) values(  4 ,  0 . 021  )

insert into #t3 ( id_t2, id_t1 ) values(  4 ,  9  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  3  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  4  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  5  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  8  )
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444007
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDento mir

а если добавить:
Код: plaintext
1.
2.
3.
4.
5.
6.
insert into #t2 ( id_t2, probability ) values(  4 ,  0 . 021  )

insert into #t3 ( id_t2, id_t1 ) values(  4 ,  9  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  3  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  4  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  5  )
insert into #t3 ( id_t2, id_t1 ) values(  4 ,  8  )
А самому проверить слабО? :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
  '(9, 3, 4, 5, 8)' as "set",
  MIN(probability) as probability
from 
 #t2 join #t3 on #t2.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 9 ,  3 ,  4 ,  5 ,  8 )
group by #t2.id_t2
having count(*) =  5 

set             probability 
--------------- ----------- 
( 9 ,  3 ,  4 ,  5 ,  8 ) . 021 

...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444023
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to mir

а для (3,4,5)?
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444117
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDento mir

а для (3,4,5)?Ага, косяк, поспешил, надо еще подумать.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444120
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAEНу да, азы проектирования не распишут... Но хоть сказали бы прямо: "эта задача с идентификацией наборов - элементарнейшая и разобрана <линк>"[...]
попробуйте пообщаться с дошкольниками и скажите, что задача умножения натуральных чисел элементарная и приведите им дваждыдва.lnk
p.s. просто мысли вслух без привязки к теме, Ваша задача, действительно, более туманная, но, полагаю, не намного сложнее
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444181
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, на ходу поправил, но теперь это не лаконично и не очень красиво. Наверняка люди улучшат, надо только подумать.
Но это-таки работает:
Код: plaintext
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.
--Выборка вероятности для набора (9, 3, 4, 5, 8)

select
  '(9, 3, 4, 5, 8)' as "set",
  MIN(probability) as probability
from 
( select 
    #t2.id_t2,
    MIN(probability) as probability
  from 
   #t2 join #t3 on #t2.id_t2 = #t3.id_t2
  group by #t2.id_t2
  having count(*) =  5 
) as groups
 join 
 #t3 on groups.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 9 ,  3 ,  4 ,  5 ,  8 )
group by groups.id_t2
having count(*) =  5 


set             probability 
--------------- ----------- 
( 9 ,  3 ,  4 ,  5 ,  8 ) . 021 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
--Выборка вероятности для набора (3, 4, 5)

select
  '(3, 4, 5)' as "set",
  MIN(probability) as probability
from 
( select 
    #t2.id_t2,
    MIN(probability) as probability
  from 
   #t2 join #t3 on #t2.id_t2 = #t3.id_t2
  group by #t2.id_t2
  having count(*) =  3 
) as groups
 join 
 #t3 on groups.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 3 ,  4 ,  5 )
group by groups.id_t2
having count(*) =  3 

set       probability 
--------- ----------- 
( 3 ,  4 ,  5 ) . 039 

И т.д.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444189
012345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mir[quot AXAE]P.S. Просто удивительно, как часто люди, просящие совета, надеются на телепатию читателей, вместо максимально понятной постановки задачи... Или это просто лень?
Просто лень, поэтому надеются на телепатию читателей :)
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444275
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirНу, на ходу поправил, но теперь это не лаконично и не очень красиво. Наверняка люди улучшат, надо только подумать.
Но это-таки работает:
Код: plaintext
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.
--Выборка вероятности для набора (9, 3, 4, 5, 8)

select
  '(9, 3, 4, 5, 8)' as "set",
  MIN(probability) as probability
from 
( select 
    #t2.id_t2,
    MIN(probability) as probability
  from 
   #t2 join #t3 on #t2.id_t2 = #t3.id_t2
  group by #t2.id_t2
  having count(*) =  5 
) as groups
 join 
 #t3 on groups.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 9 ,  3 ,  4 ,  5 ,  8 )
group by groups.id_t2
having count(*) =  5 


set             probability 
--------------- ----------- 
( 9 ,  3 ,  4 ,  5 ,  8 ) . 021 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
--Выборка вероятности для набора (3, 4, 5)

select
  '(3, 4, 5)' as "set",
  MIN(probability) as probability
from 
( select 
    #t2.id_t2,
    MIN(probability) as probability
  from 
   #t2 join #t3 on #t2.id_t2 = #t3.id_t2
  group by #t2.id_t2
  having count(*) =  3 
) as groups
 join 
 #t3 on groups.id_t2 = #t3.id_t2
where
  #t3.id_t1 IN ( 3 ,  4 ,  5 )
group by groups.id_t2
having count(*) =  3 

set       probability 
--------- ----------- 
( 3 ,  4 ,  5 ) . 039 

И т.д.
Я уже приводил алгоритм в этой же ветке он слегка похож на последний вариант :)
Тынц

Вот он же в коде, в моей редакции (# заменена на A и синтаксис oracle):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * from AT2 where id_t2 in(
select id_t2 from AT3
where id_t2 in
(
select id_t2 from AT3 where id_t1 =  3  
INTERSECT
select id_t2 from AT3 where id_t1 =  4 
INTERSECT
select id_t2 from AT3 where id_t1 =  5 
)
group by id_t2
having count(*) =  3 )
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444666
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обалдеть, сколько мне написали... Буду разбираться, спасибо :)

P.S. Какой смысл твердить новичкам, какие они глупые, ленивые, не умеют поставить вопрос, не хотят искать темы на форумах и т.п.?! Всем ведь не объяснишь, они все равно будут и будут приходить такими - они ведь друг с другом никак не связаны... Этим вы их обижаете, а сами - ничего не получаете от такого обсуждения...((
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444696
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оффтопик: Как мне самому-то тяжело разбираться в чужих структурах, запросах, мыслях... С первого взгляда ничего не понял:
'(1, 5)' as "set", - ни что такое <as "set">
MIN(probability) as probability - ни почему MIN(probability)
having count(*) = 2 - ни что такое having
group by #t2.id_t2 - и проблемы с пониманием, как действует GROUP

Но это уже мои проблемы - структура данных вполне отвечает задаче (спасибо Мелани)... Буду разбираться :)
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444963
AXAE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
012345 mir[quot AXAE]P.S. Просто удивительно, как часто люди, просящие совета, надеются на телепатию читателей, вместо максимально понятной постановки задачи... Или это просто лень?
Просто лень, поэтому надеются на телепатию читателей :)
Вы, видать, из тех, кто считает, что хорошо поставленный вопрос будет стоять там еще долго, а не из тех, кто считает, что хорошо поставленный вопрос заключает в себе ответ
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34444974
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDen
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * from AT2 where id_t2 in(
select id_t2 from AT3
where id_t2 in
(
select id_t2 from AT3 where id_t1 =  3  
INTERSECT
select id_t2 from AT3 where id_t1 =  4 
INTERSECT
select id_t2 from AT3 where id_t1 =  5 
)
group by id_t2
having count(*) =  3 )
Я бы заменил в первой строке
Код: plaintext
SELECT * from AT2 where id_t2 in (
на
Код: plaintext
SELECT * from AT2 where id_t2 = (
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34445033
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой финальный (чуть улучшенный) вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select * from #t2 
where id_t2 = 
(
  select groups.id_t2 from #t3
  join 
  ( select id_t2
      from #t3
      group by id_t2
      having count(*) =  3  --ЧИСЛО ЗНАЧЕНИЙ СПИСКА
    ) as groups
    on groups.id_t2 = #t3.id_t2
  where
    #t3.id_t1 IN ( 3 ,  4 ,  5 ) --СПИСОК
  group by groups.id_t2
  having count(*) =  3  --ЧИСЛО ЗНАЧЕНИЙ СПИСКА
)
Мой вариант, кстати можно применить и без динамического SQL, если СПИСОК берется из какой-то таблицы (запроса), т.е. вместо in (3, 4, 5) будет стоять in (select ...) . Параметр ЧИСЛО ЗНАЧЕНИЙ СПИСКА может передаваться как параметр запроса.
...
Рейтинг: 0 / 0
Уникально идентифицировать набор значений
    #34450721
Melani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AXAE структура данных вполне отвечает задаче (спасибо Мелани)...

пожалуйста :)

AXAE
Оффтопик: Как мне самому-то тяжело разбираться в чужих структурах, запросах, мыслях... С первого взгляда ничего не понял:
'(1, 5)' as "set", - ни что такое <as "set">
MIN(probability) as probability - ни почему MIN(probability)
having count(*) = 2 - ни что такое having
group by #t2.id_t2 - и проблемы с пониманием, как действует GROUP

Но это уже мои проблемы -... Буду разбираться :)


эх ты, основ языка SQL не знаешь. Читай, пробуй, развивайся!!
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Уникально идентифицировать набор значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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