Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2012, 11:11   #1
GreAsk
 
Регистрация: 25.01.2012
Сообщений: 6
По умолчанию MySQL операции над множествами

Задача следующего плана. В базе данных необходимо хранить большое количество наборов значений (каждый набор состоит из 6 числовых значений):
Например:
36 79 98 35 46 87
56 89 34 67 68 32
….
и т.д.
Нужно определить какие наборы входят в заданное подмножество (заданное подмножество вводиться в клиентской программе).
Лучше все делать через запросы в базе данных или лучше получить из базы все наборы и уже в клиентской программе производить операции над множествами? Что будет продуктивнее? Если все делать в БД, то как запрос сформировать?
GreAsk вне форума Ответить с цитированием
Старый 25.01.2012, 11:25   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Встречный вопрос: в каком виде предполагается хранение этих данных в базе? Вижу два варианта: шесть полей типа SMALLINT для каждого из значений набора или одно строковое поле для хранения в том виде, что у вас указан. Может у вас третий вариант? Если первый вариант, то можно и запросом решить. Второй вариант - если и можно запросом, то пока не ясно как.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2012, 11:58   #3
GreAsk
 
Регистрация: 25.01.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Встречный вопрос: в каком виде предполагается хранение этих данных в базе? Вижу два варианта: шесть полей типа SMALLINT для каждого из значений набора или одно строковое поле для хранения в том виде, что у вас указан. Может у вас третий вариант? Если первый вариант, то можно и запросом решить. Второй вариант - если и можно запросом, то пока не ясно как.
Первый вариант: шесть полей типа SMALLINT для каждого из значений набора.
GreAsk вне форума Ответить с цитированием
Старый 25.01.2012, 12:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Поля: P1,P2,P3,P4,P5,P6
Множество: (1,34,22,56,33,88,77,55,66)
Код:
SELECT *
  FROM Table1
  WHERE P1 IN (1,34,22,56,33,88,77,55,66) AND
        P2 IN (1,34,22,56,33,88,77,55,66) AND
        P3 IN (1,34,22,56,33,88,77,55,66) AND
        P4 IN (1,34,22,56,33,88,77,55,66) AND
        P5 IN (1,34,22,56,33,88,77,55,66) AND
        P6 IN (1,34,22,56,33,88,77,55,66)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.01.2012, 11:42   #5
GreAsk
 
Регистрация: 25.01.2012
Сообщений: 6
По умолчанию

Спасибо за советы, очень помогли.
GreAsk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции над файлами.. Jakudzafan Общие вопросы C/C++ 17 28.06.2011 12:33
операции над множествами через векторы нубс++ Общие вопросы C/C++ 1 13.04.2011 00:24
операции над файлами Antil Помощь студентам 0 21.11.2010 12:06
как переделать программку с операциями над множествами! sproject Помощь студентам 0 07.03.2010 09:30
Операции над множествами britva666 Помощь студентам 2 23.06.2009 20:33