少し助けが必要です。私は(参照?)列を持つテーブルを持っています:id , user_id , key , value
これはほとんどユーザー プロファイル テーブルであり、SQL を使用したいと考えています (私は zend db テーブルを使用していますが、一般的な SQL ヘルプで十分です)。その user_id は、'key' が otherkey で 'value' が othervalue である場所にも一致する場合に限ります。
つまり、メーカーがNIKEで色がBLACKの靴を持っているユーザーを獲得したい。したがって、'key' は靴の色で、'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);
助けてください。ありがとう。