【发布时间】:2020-10-28 17:04:24
【问题描述】:
我下面有一个sql表,列参数的值和参数值是动态创建的。下面的设计是为了满足后期添加的附加参数。所以我认为使用参数和参数值作为列并不适合这种设计。
|---------------------|------------------|------------------|
| Parameter | Parameter Value | Computers |
|---------------------|------------------|------------------|
| Phase | New | PC1 |
|---------------------|------------------|------------------|
| Phase | New | PC2 |
|---------------------|------------------|------------------|
| Phase | Redevelopment | PC3 |
|---------------------|------------------|------------------|
| Cost | High | PC1 |
|---------------------|------------------|------------------|
| Cost | High | PC2 |
|---------------------|------------------|------------------|
| Cost | Cost | PC3 |
|---------------------|------------------|------------------|
假设用户按 Phase = "New" AND Cost = "High" 进行搜索,结果将是 PC1。
此刻,我能想到的是这样的:
SELECT *
FROM projectParameter
WHERE Parameter = 'Phase' AND Value = 'New' AND Parameter = 'Cost' AND Value = 'High'
提前致谢!
【问题讨论】:
-
你的意思是
where Parameter = 'Cost' and Parameter Value = 'High'? -
@SomeBody - 不,因为该条件一次仅适用于一行,但 OP 询问如何将条件应用于一组行 (返回所有包含
P='Cost' AND 'PV='High'行并包含P='Phase' AND PV='New'row。)