【发布时间】:2015-11-17 06:46:00
【问题描述】:
我搜索并查看了有关从 MySQL 中旋转(动态)数据的各种帖子。我已经设法让它在一张桌子上工作,但是当我试图用三张桌子来做这件事时,我遇到了一个障碍。有人能指出我正确的方向吗?
- 表 1:供应商(我们购买的供应商列表)
- 表 2:标准(每个供应商设置的标准)
- 表 3:矩阵(用于 以上两种)
我想要实现的是这样的矩阵/枢轴:
Criteria1 Criteria2 Criteria3
Vendor 1 ValueFromMatrix ValueFromMatrix ValueFromMatrix
Vendor 2 ValueFromMatrix ValueFromMatrix ValueFromMatrix
Vendor 3 ValueFromMatrix ValueFromMatrix ValueFromMatrix
此表的使用示例:
MinOrderQty MinOrderValue ReturnsAllowed
Intel 1000 5000.00 RMA required
AMD 2000 15000.00 No
nVidia 9000 8000.00 RMA + dropship
供应商和标准的数量是动态的,可以由用户添加/删除,所以我不能硬编码从行到列的转换。
ValueFromMatrix 是 Varchar(200) 字段并包含文本。它通过使用 VendorID 和 CriteriaID (int) 字段链接另外两个表。
我只是在这里碰了壁,我没有运气破译我见过的一些例子。
表格代码:
CREATE TABLE `vendors` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`vendor_name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
CREATE TABLE `criteria` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`criteria_desc` varchar(150) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
CREATE TABLE `matrix` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vendor_id` int(11) DEFAULT NULL,
`criteria_id` int(11) DEFAULT NULL,
`criteria_response` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=latin1;
criteria_response 字段用于填充上表示例中的 ValueFromMatrix。
如果有人能指出我正确的方向,我将不胜感激。我只是没有看到任何讨论三个表来生成此视图的示例,而且我一直卡住。
谢谢。
【问题讨论】: