J'ai besoin d'un peu d'aide. je (référence?) Table avec colonnes: id , user_id , key , value
Sql (zend db select) des sélections multiples
Il est à peu près une table de profil d'utilisateur et je voudrais avoir SQL (j'utilise table zend db, mais l'aide de SQL général va faire) où je reçois "all" user_id où 'key' est somekey et 'value' est une valeur de cet user_id mais seulement s'il correspond aussi où 'key' est otherkey et 'value' vaut othervalue ". En d'autres termes, je veux obtenir des utilisateurs qui ont des chaussures du fabricant NIKE et de la couleur NOIR. donc 'key' est shoecolor et 'value' est BLACK et aussi une autre ligne avec le même user_id a 'key' est cordonnier et 'value' est NIKE.
Voici ce que j'ai pu trouver, mais cela ne fonctionne pas.
SELECT `user_profiles`.* FROM `user_profiles` WHERE
(`key` = 'shoecolor' AND `value` = 'BLACK') AND
(`key` = 'shoemaker' AND `value` = 'NIKE')
Dans le cas où une personne est en zend db knowledgable:
$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);
S'il vous plaît aider. Merci.
Je crois que vous avez encore besoin d'ajouter une condition de jointure 'REJOIGNEZ user_profiles UP2 ON up1.user_id = up2.user_id' – Vika
oups, vous avez raison. J'oublie toujours ce genre de choses, bien que l'idée générale puisse être correcte :) Je vais ajouter ça, merci :) – Nanne
Merci beaucoup – DavidHavl