MySQL: как конвертировать в EAV? - PullRequest
3 голосов
/ 11 августа 2011

Допустим, у меня есть следующая таблица:

TABLE: one
===============================
| id | first_name | last_name |
===============================
| 1  | John       | Doe       |
| 2  | Jane       | Smith     |
-------------------------------

Я хочу преобразовать ее в EAV:

TABLE: two
===================================
| id | fk_id | attribute  | value |
===================================
| 1  | 1     | first_name | John  |
| 2  | 1     | last_name  | Doe   |
| 3  | 2     | first_name | Jane  |
| 4  | 2     | last_name  | Smith |
-----------------------------------

Примечание:

  • two.Значения fk_id получены из one.id
  • Значения two.attribute получены из one.first_name
  • Значения two.value получены из one.last_name

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

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Я предполагаю, что two.id - это автоинкрементное целое число, поэтому я оставлю его целевой таблице для присвоения этих значений.

select id as fk_id, 'first_name' as attribute, first_name as value
from one
union all
select id as fk_id, 'last_name', last_name
from one
order by fk_id, attribute
0 голосов
/ 11 августа 2011

Ради любви к Богу, не используйте EAV !!!! Если вам это нужно, используйте базу данных NoSQL!

...