我的数据库中有两张表,一张是个人的,一张是他们的属性。
CREATE TABLE IF NOT EXISTS `person` (
`ID` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `property` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`person_ID` INT NULL ,
`property` VARCHAR(45) NULL ,
`value` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
在属性表中,我会插入类似
(,1,'姓名','玛丽') (,1,'性别','女')
(,2,'姓名','约翰') (,2,'性别','男') (,2,'高度','165cm')
我将如何制作可以生成这些列的 View 语句: person_ID、姓名、性别、高度(以及可能出现的任何其他属性)
提前谢谢您,
最佳答案
试试这个。
SELECT
p.ID, prop.name, prop.gender, prop.height
FROM
person p
JOIN
(
SELECT
person_ID,
MAX(IF(`property` = 'name', `value`, NULL)) AS name,
MAX(IF(`property` = 'gender', `value`, NULL)) AS gender,
MAX(IF(`property` = 'height', `value`, NULL)) AS height
FROM
property
GROUP BY
person_ID) prop
ON p.ID = prop.person_ID;
请注意,在此解决方案中,所有字段和值都是硬编码的。
关于mysql - 如何在mysql中创建具有规范化属性的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6816037/