多次选择的Sql(zend db select)

我需要一些帮助。 我有(参考?)表格列:
id , user_id , key , value
它几乎是一个用户配置文件表 我想要SQL(我使用的是zend db table,但是一般的SQL帮助会这样做)我得到“all'user_id's其中'key'是somekey而'value'是user_id的某些值,但只有当它也匹配时其中'key'是otherkey而'value'是othervalue“。 换句话说,我希望得到制造商NIKE和颜色黑色鞋子的用户。 因此'key'是shoecolor,'value'是BLACK,另一行具有相同的user_id,'key'是鞋匠,'value'是NIKE。 这是我能想到的,但不起作用。
SELECT `user_profiles`.* FROM `user_profiles` WHERE
(`key` = 'shoecolor' AND `value` = 'BLACK') AND
(`key` = 'shoemaker' AND `value` = 'NIKE')
如果有人在zend db中知道:
$where = array('shoecolor' => 'BLACK', 'shoemaker' => 'NIKE');
    foreach ($where as $key => $value) {
        $sql = $db->quoteInto('key = ?', $key);
        $sql .= ' AND ' . $db->quoteInto('value = ?', $value);
        $select->where($sql);
    }
    // make unique result
    //$select->groupBy('user_id');
    $resultSet = $zendTableInstance->fetchAll($select);
请帮忙。 感谢名单。     
已邀请:
因为键/值对在行中,所以您的查询正在查找3 AND 4的键。没有值可以同时为3和4;)
SELECT user_profiles.* FROM user_profiles WHERE (key = 3 AND value = 21) AND (key = 4 AND value = 55)
不管用。 你可以自己加入,检查这些值吗?
SELECT user_profiles.* 
FROM user_profiles up1
  JOIN user_profiles up2 ON up1.user_id = up2.user_id
WHERE 
  (up1.key = 3 AND up1.value = 21) 
  AND (up2.key = 4 AND up2.value = 55)
    

要回复问题请先登录注册