gpt4 book ai didi

mysql - 多选择的Sql(zend db select)

转载 作者:行者123 更新时间:2023-11-29 14:54:53 25 4
gpt4 key购买 nike

我需要一点帮助。我有(引用?)表,其中包含以下列: id 、 user_id 、 key 、 value

这几乎是一个用户配置文件表我想要 SQL (我正在使用 zend db 表,但一般 SQL 帮助就可以),我得到“所有 'user_id's,其中 'key' 是 somekey,'value' 是该 user_id 的某个值,但前提是它也匹配其中“key”是 otherkey,“value”是 othervalue”。

换句话说,我希望获得拥有耐克制造商且颜色为黑色的鞋子的用户。因此“key”是shoecolor,“value”是BLACK,并且具有相同user_id的另一行的“key”是shoemaker,“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)

关于mysql - 多选择的Sql(zend db select),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com