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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2014, 22:59   #1
ВалекFCRK
Форумчанин
 
Регистрация: 04.06.2011
Сообщений: 120
Восклицание Вопрос по фильтрации данных

К примеру беру такую таблицу.

Ваня 15лет 5класс карате
Леша 15лет 5класс баскетбол
Миша 15лет 5класс футбол
Саша 15лет 5класс футбол#карате / ну а саша 2мя видами спорта. Я для нагляндости разделил #.

На сайте при нажатии на категорию Карате.
Я делаю SELECT * FROM data WHERE sport='карате' .
Как мне организовать данные в таблице и запрос к ней. Чтобы в категории карате появился и саша тоже.
Следовательно он должен быть и в футболе.
Я конечно могу сделать вот так)) SELECT * FROM data WHERE sport='футбол#карате ' Но это на раз. Для каждого ученика делать запрос - анонизм.

Спасибо.
ВалекFCRK вне форума Ответить с цитированием
Старый 19.03.2014, 23:07   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

потому что это не реляционные данные
т.о. либо like либо реляционные данные
eval вне форума Ответить с цитированием
Старый 19.03.2014, 23:08   #3
ВалекFCRK
Форумчанин
 
Регистрация: 04.06.2011
Сообщений: 120
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
потому что это не реляционные данные
и что мне сделать
ВалекFCRK вне форума Ответить с цитированием
Старый 19.03.2014, 23:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

связь "многие-ко-многим" легко реализуется через промежуточную таблицу.
у Вас есть две таблицы:
Person:
id FIO дата_рождения пол класс и т.д.

Sport
id SportName ...

и заводите таблицу
PersonInSport
id_Person id_Sport

тогда Вася сможет одновременно заниматься не только футболом и каратэ, но и дзюдо, шахматами и плаванием.


И, кстати, очень легко получить количество людей занимающихся каждым видом спортам
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2014, 23:13   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

блин неправильно написал
реляционные данные => реляционная структура
eval вне форума Ответить с цитированием
Старый 19.03.2014, 23:15   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
и что мне сделать
либо like либо реляционная структура (см. Serge_Bliznykov)

и это... "по учебнику" это не фильтрация а поиск, почему так - не в курсе

Последний раз редактировалось eval; 19.03.2014 в 23:30.
eval вне форума Ответить с цитированием
Старый 19.03.2014, 23:32   #7
ВалекFCRK
Форумчанин
 
Регистрация: 04.06.2011
Сообщений: 120
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
связь "многие-ко-многим" легко реализуется через промежуточную таблицу.
у Вас есть две таблицы:
Person:
id FIO дата_рождения пол класс и т.д.

Sport
id SportName ...

и заводите таблицу
PersonInSport
id_Person id_Sport

тогда Вася сможет одновременно заниматься не только футболом и каратэ, но и дзюдо, шахматами и плаванием.


И, кстати, очень легко получить количество людей занимающихся каждым видом спортам

Получается в таблице PersonInSport будет примерно так?
Вася футбол
Вася баскетбол
Петя шахматы
.
ВалекFCRK вне форума Ответить с цитированием
Старый 19.03.2014, 23:33   #8
ВалекFCRK
Форумчанин
 
Регистрация: 04.06.2011
Сообщений: 120
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
либо like либо реляционная структура (см. Serge_Bliznykov)

и это... "по учебнику" это не фильтрация а поиск, почему так - не в курсе
Спасибо Не направите ссылкой на инфу по like?
ВалекFCRK вне форума Ответить с цитированием
Старый 19.03.2014, 23:54   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ВалекFCRK Посмотреть сообщение
Получается в таблице PersonInSport будет примерно так?
Вася футбол
Вася баскетбол
Петя шахматы
.
точно.
только вместо "Вася" - его ID
и вместо "футбол" - ID футбола..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2014, 23:56   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Не направите ссылкой на инфу по like
зависит от субд, только лайк это - прощай производительность
eval вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование данных после фильтрации PECTABPATOP Microsoft Office Excel 4 30.12.2012 11:49
Реализация фильтрации в базе данных SQL в ASP.NET dridnol Помощь студентам 0 22.06.2012 09:20
Вопрос по фильтрации даных. когда применяються ключевые слова - Filter и Filtered? $T@LKER БД в Delphi 7 11.05.2010 12:27
Метод фильтрации данных sovereignua Общие вопросы C/C++ 0 11.11.2009 19:07
ошибка фильтрации Dozent Общие вопросы Delphi 5 25.06.2008 22:52