MySQL列变量表

时间:2017-06-19 16:06:23

标签: mysql

|-------------------------|
| column_table            |
|-------------------------|
| column_id | column_name |
|-----------|-------------|
| 1         | column_1    |
|-----------|-------------|
| 2         | column_2    |
|-------------------------|



|-------------------|
| row_table         |
|-------------------|
| row_id | row_name |
|--------|----------|
| 1      | row_1    |
|--------|----------|
| 2      | row_2    |
|-------------------|



|--------------------------------------------|
| value_table                                |
|--------------------------------------------|
| value_id | column_id | row_id | value_name |
|----------|---------------------------------|
| 1        | 1         | 1      | value_11   |
|----------|---------------------------------|
| 2        | 2         | 1      | value_21   |
|--------------------------------------------|
| 3        | 1         | 2      | value_12   |
|--------------------------------------------|
| 4        | 2         | 2      | value_22   |
|--------------------------------------------|

美好的一天,请告诉我,我如何设计数据库以便能够在结果表中添加行和列?构建一个结果表(显然使用临时表)如下表所示。

|-----------------------------|
| result_table                |
|-----------------------------|
|       | column_1 | column_2 |
|-------|---------------------|
| row_1 | value_11 | value_21 |
|-------|---------------------|
| row_2 | value_12 | value_22 |
|-----------------------------|

1 个答案:

答案 0 :(得分:0)

假设您有以下表格:

|-------------------------|
| column_table            |
|-------------------------|
| column_id | column_name |
|-----------|-------------|
| 1         | column_1    |
|-----------|-------------|
| 2         | column_2    |
|-------------------------|



|-------------------|
| row_table         |
|-------------------|
| row_id | row_name |
|--------|----------|
| 1      | row_1    |
|--------|----------|
| 2      | row_2    |
|-------------------|

您只需要一个如下表所示的表来存储每个“虚拟”表格单元格的值:

|-----------------------------------------|
| value_table                             |
|-----------------------------------------|
| value_id | row_id | column_id | value   |
|-----------------------------------------|
|     1    |    1   |     1     |  'Y'    |
|     2    |    1   |     2     |  915    |
|     3    |    2   |     1     |  'N'    |
|     4    |    2   |     1     |  883    |
|-----------------------------------------|

然后您可以发出如下所示的查询以显示结果:

select   
        value_id
      , row_name
      , column_name
      , value
  from
      value_table v join

      column_table c on
             v.columnd_id = c.column_id      join

      row_table r on
             v.row_id = r.row_id

  where
      {{ some conditions }};