MYSQL数据透视表创建

时间:2014-08-07 19:55:22

标签: mysql pivot-table

我已尝试过各种教程和示例,如何制作动态数据透视表,我无法使其工作。每次我得到一些SQL错误。

有人可以帮助我制作动态数据透视表。我是新手,我想我首先制作数据透视表时会按属性轻松进行过滤搜索。这是我的表格:

表1名称:table_items

------------------------------
| item_id |   title    | ... |
------------------------------
|    1    |  item 1    | ... |
------------------------------
|    2    |  item 2    | ... |
------------------------------

表2名称:table_item_options

-----------------------------
| option_id |   option_name |
-----------------------------
|    1      |     Color     |
-----------------------------
|    2      |     Size      |
-----------------------------

表3名称:table_attributes

--------------------------------------------------
| attribute_id |   option_id    | attribute_name |
--------------------------------------------------
|      1       |       1        |      Blue      |
--------------------------------------------------
|      2       |       1        |      Red       |
--------------------------------------------------
|      3       |       2        |      XL        |
--------------------------------------------------
|      4       |       1        |      Green     |
--------------------------------------------------
|      5       |       2        |      L         |
--------------------------------------------------

表4名称:table_item_attributes

------------------------------------------------------
| assigned_id |  item_id  | option_id | attribute_id |
------------------------------------------------------
|      1      |     1     |     1     |      1       |
------------------------------------------------------
|      1      |     1     |     1     |      2       |
------------------------------------------------------

非常感谢任何帮助

我想要的是按项目属性对项目进行产品过滤。据我所知,最好制作一个数据透视表,并避免重复结果表连接表。

所有第一列都是主键,并且具有自动增量。

编辑: 此时,使用内部联接,我创建了一个大表,而在Select子句中,我将" WHERE attribute_id =' 2' &#34 ;. (这意味着选择全部红色),但像这样我只能使用一个过滤器。

所以我有一个问题,我不能使用来自attribute_id列的多个过滤器,我想过滤更多属性(其他颜色,其他大小,城市等)。

那么我怎样才能使用数据透视表呢?我的目的是动态创建来自(table_item_options)的option.name列,并用attribute_id或attribute_name填充它,这样我就可以使用更多的过滤器

例如:

-----------------------------------------------------
| item_id |  ...  | color    | size | City  | etc.. |
------------------------------------------------------
|      1  |  ... | 1(or Red) | L    | A     | ...   |
------------------------------------------------------
|      1  |  ... | 2(or Blue)| XL   | B      | ...  |
------------------------------------------------------

在这样的表中,如果我选择* ..其中color = red,我将能够通过另一列过滤此表,例如:Where city = a

我希望现在更清楚了。

0 个答案:

没有答案