Mysql 多次选择的Sql(zend db select)
我需要一些帮助。 我有一个(参考?)表,表中有以下列:Mysql 多次选择的Sql(zend db select),mysql,zend-framework,zend-db,zend-db-select,Mysql,Zend Framework,Zend Db,Zend Db Select,我需要一些帮助。 我有一个(参考?)表,表中有以下列:id、user\u id、key、value 它几乎是一个用户配置文件表 我希望使用SQL(我使用的是zend db table,但一般的SQL帮助就可以了),在这里我得到“所有的‘user_id’,其中‘key’是该user_id的某个key,而‘value’是该user_id的某个value,但前提是它也匹配其中的‘key’是otherkey,而‘value’是othervalue” 换言之,我希望获得拥有制造商NIKE和颜色为黑色的鞋的
id、user\u id、key、value
它几乎是一个用户配置文件表
我希望使用SQL(我使用的是zend db table,但一般的SQL帮助就可以了),在这里我得到“所有的‘user_id’,其中‘key’是该user_id的某个key,而‘value’是该user_id的某个value,但前提是它也匹配其中的‘key’是otherkey,而‘value’是othervalue”
换言之,我希望获得拥有制造商NIKE和颜色为黑色的鞋的用户。
因此,“key”是shoecolor,“value”是黑色,“key”是shoemaker,“value”是NIKE,而另一行具有相同用户id的“key”是shoemaker
这是我能想到的,但不起作用
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);
请帮忙。
Thanx.因为键/值对在行中,所以您的查询正在查找一个3和4的键。任何值都不能同时为3和4;) 这是行不通的 你可以自己做一个连接,然后检查这些值
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)
我相信您仍然需要添加一个连接条件
在up1上连接用户\u profiles up2.user\u id=up2.user\u id
oops,您是对的。我总是忘记这类事情,尽管总的想法可能是正确的:)我要补充一点,谢谢:)
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)