- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Зависит от СУБД. PostgreSQL, например, умеет. MySQL - нет.
Но обычно такое желание говорит о том, что у вас неправильно спроектирована схема данных, т.е. не проведена нормализация.
Как это не умеет? Массив в ячейку записывается используя mysql serialize, как я и написал выше 🍿
Массив в ячейку записывается используя mysql serialize
Вопрос как по нему делать выборки, кроме как всё поле целиком и десериализация на php?
Как это не умеет? Массив в ячейку записывается используя mysql serialize, как я и написал выше
У mysql нет такой функции serialize, в бд с точки зрения данных вы записываете обычную строку с определенной структурой. Таким же успехом можно создать свою любую структуру для хранения блоков значений - разделенные через запятую и тд.
Тот самый случай когда если сказал никогда - то никогда не захочешь делать запросы на выборку по части такого поля, а прочитать его целиком и разобрать на части вообще не проблема, конечно. Однако как это нередко случается легкость решения соблазняет и многие не выдерживают и вскоре начинают хотеть. Примерно каждый десятый вопрос на sql.ru про то, как сделать выборку по значению "третьего элемента в строке с разделителем труба".
Рел.БД в принципе для таких закидонов не предназначены.
используйте тип поля enum
И перед каждой записью в таблицу ALTER TABLE :)
храни хоть миллион значенией в json, в чём проблема то конкретно?
конвертируй туда-обратно если недосубд
если postgres там всё это есть
Конструктивно. Несколько значений для одного поля хранятся в другой таблице с очень простой структурой, table_values:
id --- собственный униключ, автоинкремент, для управления таблицей
pid --- ссылка на id родителя
value --- значение
Фактическое содержание может быть таким
1 23 986
2 23 753
4 12 762
3 23 975
5 25 975
select value from table_values where pid=23;
получили массив всех значений для родителя с ид 23.
Чтобы вывести все эти значения в строку, как бы они там и были записаны (как в вопросе сформулировано), потребуется группировка и конкатенация https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat - эта функция имеет ограничение длины результата до 1000 знаков по дефолту.
В общем если запрашивать по участкам строки не придется, то - пишите в одну строку, а если придется - то скорее всего выборка обломится, значит не пишите в одну строку.
храни хоть миллион значенией в json, в чём проблема то конкретно?
Проблема в том, что нафига здесь json когда можно хранить числовые значения через запятую и использовать для поиска FIND_IN_SET?..
теория баз данных говорит, что таблицы нужно проектировать так, что бы в одном поле хранилось одно значение.
Это положительно отразится на скорости работы и легкости сопровождения.
Ladycharm, согласен.
siv1987, да, это php, забыл, каюсь :) У меня, как у недопрограммиста самоучки, все в одну кучу в голове :)