Как динамически добавить columnName и его значение в MYSQL Table - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть главная таблица, например, Fruits_Details (основная таблица), которая содержит имя столбца в виде:
имя_файла | f_price | место
Я хочу представить пользователю форму, которая состоит из вышеуказанных полей, но также содержит дополнительный знак «+», из которого он может добавлять новые данные в качестве пары ключ-значение.

Например:
фруктовый цвет - красный
сезон фруктов - весна
И еще много таких деталей. Я хочу, чтобы эти две детали были сохранены в другой таблице (дочерняя таблица - я реализую концепцию внешнего ключа).
Но меня смущает то, как будет разрабатываться запрос, который будет динамически добавлять имя столбца и связанное с ним значение в моей дочерней таблице.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

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

Таблица с именем fruits_attributes, которая будет содержать столбцы: attribute_id, f_id (внешний ключ), attribute_name, attribute_value

CREATE TABLE `fruits_attributes` (
  `attribure_id` int(8) unsigned NOT NULL AUTO_INCREMENT,
  `f_id` mediumint(8) unsigned NOT NULL,
  `attribure_name` varchar(50) NOT NULL,
  `attribure_value` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `f_id` (`offer_id`),
  KEY `attribure_name` (`attribure_name`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
;

Тогда запрос SELECT должен выглядеть примерно так:

SELECT f.*, fa.* FROM
Fruits_Details f
LEFT JOIN fruits_attributes fa ON fa.id = f_id
0 голосов
/ 06 сентября 2018

Дочерняя таблица должна иметь имя и значение атрибута, в нем не должно быть ничего динамического.

child table
-----------
fruit_id
attribute_name
attribute_value


insert into child (fruit_id, attribute_name, attribute_value)
values (1, 'color', 'red')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...