如果我有一组人员标识符(12,34,54,65)和一个包含密钥(性别,年龄,薪水等)的数据库,例如:
详细信息表
{Person ID, Key, Value}
{12, Gender, Male}
{34, Age, 40}
{54, Salary, 30000}
人员表
ID
12
34
54
65
我想创建由{12,34,54,65} x {Age,Salary,Gender}
的powerset组成的行,无论Details表中是否有数据值
答案 0 :(得分:3)
您不需要汇总,您需要透视表 -
SELECT p.id, d.gender, d.age, d.salary FROM personnel p
JOIN (
SELECT person_id,
MAX(IF(`key` = 'gender', `value`, NULL)) AS gender,
MAX(IF(`key` = 'age', `value`, NULL)) AS age,
MAX(IF(`key` = 'Salary', `value`, NULL)) AS salary
FROM
details
GROUP BY
person_id) d
ON p.id = d.person_id;
答案 1 :(得分:0)
我猜你正在寻找的东西很简单:
select * from personnel p, details d where d.person_id = p.person_id
但details
表对我来说闻起来像是一个根本破碎的设计。 value
列的类型是什么?一串?它存储字符串,整数和货币值?祝你好运。我希望你不要真正使用任何这些数据,更不用说搜索它了。
编辑:没有...我现在认为Devart是现货。我不明白这个问题。叹息。