我在数据库中有两个表,一个是个人表,另一个是他们的属性。
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, '身高', '165厘米')
我将如何制作可生成这些列的视图语句: person_ID,名称,性别,身高,(以及可能出现的任何其他属性)
提前谢谢你,
答案 0 :(得分:1)
试试这个。
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;
请注意,在此解决方案中,所有字段和值都是硬编码的。