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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2017, 12:20   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию Mysql массив

Задача вот какая:
Имеется таблица, в которой есть поле участники (varchar), где хранится массив с id участников (примерно: 1; 8; 13; 17 ...). Необходимо вывести все поля определенного участника. Например мне нужен участник с id 8, то как мне сформировать запрос, чтобы пробежаться по всем полям и проверить есть ли в строке id нужного мне участника.

Спасибо за советы!
glebast вне форума Ответить с цитированием
Старый 01.02.2017, 13:00   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
like '%8%' отберет и 8 и 28 и 81 
like '%8;%' отберет и 8 и 28 но исключит 81
like '% 8;%' отберет ровно то что надо 8 НО ...(как же без ложки дегтя)
требуется соблюдение правил
1. ДО номера обязателен пробел (даже в начале для первого номера в списке)
2. ПОСЛЕ номера обязателен ; (даже в конце для последнего номера в списке)

можно "снизить" требования
like '%;8;%' для вот такой исходной строки ';1;8;13;17;'
одинаковый ограничитель и ДО и ПОСЛЕ.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 01.02.2017 в 13:05.
evg_m вне форума Ответить с цитированием
Старый 01.02.2017, 13:30   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

evg_m, +1

а вообще, подобная структура данных чаще всего говорит о плохой продуманности собственно структуры БД и, в результате, кривости (и нарушения всех норм и правил реляционной СУБД).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2017, 13:42   #4
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
evg_m, +1

а вообще, подобная структура данных чаще всего говорит о плохой продуманности собственно структуры БД и, в результате, кривости (и нарушения всех норм и правил реляционной СУБД).
А как бы вы посоветовали правильней реализовать хранение данных. Мне нужна таблица, в которой будут данные об игре, например сыграли люди в определенную игру и мне надо записать данные: какая игра, кто играл, победители, рейтинг победителю. По другому я не придумал как реализовать.
glebast вне форума Ответить с цитированием
Старый 01.02.2017, 14:08   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от glebast Посмотреть сообщение
А как бы вы посоветовали правильней реализовать хранение данных.
без конкретных деталей проектировать структуру - это как указывать дорогу тому, кто не знает, куда хочет дойти.

Ну так, просто навскидку,
могу предложить отдельную таблицу УчастникиИгры:

в ней ссылка на ID_Игры (если у игры есть какие-то показатели - название, дата/время, результаты и т.п. и справочник ИГР)

ID_игрока

там же дополнительная информация по участию данного игрока в данной игре (если надо, конечно).

тогда элементарным запросом можно найти как всех игроков, которые участвовали в игре, так и по игроку все игры, где он был участником.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив в MySQL, упростить lollollollol PHP 6 19.05.2014 09:13
Массив данных базы MySql MedwedoS PHP 4 02.04.2014 22:27
[C#] [MySQL] Чтение таблицы в массив Pandemonium-88 C# (си шарп) 1 19.06.2012 20:00
Как извлечь в один массив данные из одного столбца в MySQL ? Novichok PHP Помощь студентам 0 25.03.2011 21:39
Запрос mysql - создать массив на лету. iankov SQL, базы данных 0 24.01.2009 12:01