2012-05-08 4 views
1

나는 mysql에 테이블을 가지고 있는데, 이것을 foo이라고 부르 자. 열의 수는 제한되어있다.MySQL 결과에 동적 열 추가

| id | name | date | 
-------------------------- 
| 1 | bar | 2012-05-08 | 
| 2 | buba | 2012-05-09 | 

내 사용자는 (... code, description, time, 같은 물건) 테이블 foo_field에 레코드를 추가 할 수 있습니다. 테이블 foo_field_value 사용자 정의 필드의 값에

| id | name  | 
-------------------- 
| 1 | code  | 
| 2 | description | 
| 3 | time  | 

은과 같이, 저장됩니다

| id | foo_id | foo_field_id | value  | 
------------------------------------------ 
| 1 | 1  | 1   | b   | 
| 2 | 1  | 2   | Lalalala | 
| 3 | 1  | 3   | 12:00  | 
| 1 | 2  | 1   | c   | 
| 2 | 2  | 2   | We are go | 
| 3 | 2  | 3   | 14:00  | 

적으로는, 내가 나에게

같은 결과를 줄 것이다 하나 개의 쿼리를 싶어
| id | name | date  | code | description | time | 
------------------------------------------------------ 
| 1 | bar | 2012-05-08 | b | Lalalala | 12:00 | 
| 2 | buba | 2012-05-09 | c | We are go | 14:00 | 

foo_field (foo_field)에 대한 foo_fields_value 테이블에서 내부 조인을 수행하지 않고도이 작업을 수행 할 수 있습니다 (먼저 다른 쿼리를 수행하여 PHP로 쿼리 생성).

+0

각 foo 레코드에 대해 하나 이상의 foo_field_value가있을 수 있습니까? –

+0

예, 코드 code = b, description = lalalal, time = 12:00는 foo 레코드 ID 1과 관련된 foo_fields_value의 3 개의 별도 레코드입니다. – Bram

답변

2

그것은 단지 하나에 그것을 할 수있다, 그리고 아주 간단한 쿼리합니다.

우리는 foo_field 테이블을 수정하여 foo 테이블의 id 컬럼에 해당하는 컬럼을 추가 할 것입니다.이 컬럼은 기본 키라고 가정합니다.

SELECT * FROM foo 
LEFT JOIN foo_field ON foo.id = foo_field.foo_id 

우리에게

| id | name |  date | foo_id | code | description |  time | 
|----+-------+------------+--------+--------+-------------+----------| 
| 1 | asdw | 2012-05-16 |  1 | asdasd | asdasd  | 15:03:41 | 
| 2 | fdgfe | 2012-05-18 |  2 | asdas | asdas  | 15:03:41 | 
| 3 | asdw | 2012-05-16 |  3 | asdas | asdas  | 15:03:52 | 
| 4 | fdgfe | 2012-05-18 |  4 | asdasd | asdasd  | 15:03:52 | 

의 결과 세트를 줄 것이다 :

은 그래서 지금 우리는 우리가 하나 개의 간단한 쿼리와 함께 여분의 필드를 추가 할 수 있음을 의미

* foo 
|------| 
| id | 
| name | 
| date | 
|------| 

* foo_field 
|-------------| 
| foo_id  | 
| code  | 
| description | 
| time  | 
|-------------| 

이 나는 분명히 당신의 질문을 분명히 이해할 수 있을지 확신하지 못합니다. 진정으로 동적 인 값과 데이터 구조를 만들고 싶다면 데이터베이스의 TEXT 필드에 serialized 배열을 저장하는 것이 좋습니다. 그러나이 경우에는 솔루션을 간과 할 것을 권장합니다. 솔루션의 성장을 원할 경우 가능한 한 엄격한 구조로 관리하고자합니다.

+0

내 데이터베이스 구조를 잘못 이해했습니다. OP가 자세히 설명됩니다. 더. – Bram