我有一个难以解释的(mysql)sql查询问题:
我有一个存储参数值的数据库表,以及与参数值关联的案例 ID。
外键是parent_id,每个父级可以有可变数量的参数。
这意味着如果有三个参数,则有三行,四个参数,四行等。
同一个父级也可以有多个条目。我需要比较所有父参数的参数 VALUE,以获取案例 ID。表是这样的:
表壳
id param_value param_id parent_id caseID
----------------------------------------------
1 red 101 200 1234
2 pepper 102 200 1234
3 green 101 200 3456
4 pepper 102 200 3456
5 pink 205 250 9875
6 panther 206 250 9875
7 fuzzy 207 250 9875
上面的这个例子:有两种不同类型的父母:200 和 250。200 有两个 case id 的集合:
1234:参数 101 = 红色,参数 102 = 胡椒
3456 : 参数 101 = 绿色和参数 102 = 胡椒
第三个父母是另一个父母,碰巧有三个参数(它可能有更多!)
所以我会知道谁是父级,那个父级的参数 id,我将有参数值,我需要找到相应的案例 ID。
我可以使用两个带有选择的参数来做到这一点,例如:
SELECT c1.caseId from case c1
INNER JOIN case c2 ON c1.caseId=c2.caseID
WHERE c1.param_id=101 and c1.param_value='red'
AND c2.param_id=102 and c1.param_value='pepper';
(这将返回 caseId = 1234)
但 :
仅使用 SQL,我无法弄清楚如何使用两个以上的内部连接来执行此操作(因此我无法对具有三个参数的粉红豹发出类似的请求)。我需要知道如何使用可变数量的参数进行 sql 查询。
我可以用 zend 中的原始 sql 做到这一点,但如果有某种方法可以用 php Zend 做到这一点,那么我全都听好了!