Question

Je rencontre des problèmes avec une requête SQL utilisée pour afficher les champs de profil personnalisés et les valeurs correspondantes (facultatives) correspondantes.

Voici la requête SQL que j'utilise:

SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
LEFT JOIN `profile_values` AS pv ON (pf.`id` = pv.`field_id`)
WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d') AND (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
ORDER BY pf.`order` ASC

Le problème que je rencontre est que toutes les colonnes ne contenant aucun enregistrement profile_values ?? ne sont pas affichées du tout, quand elles doivent apparaître, mais uniquement avec une valeur vide.

Merci beaucoup!

Était-ce utile?

La solution

Essayez de déplacer les conditions de valeurs de profil vers l'instruction JOIN:

 SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
 LEFT JOIN `profile_values` AS pv ON (
         pf.`id` = pv.`field_id`  AND 
         (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
  )
 WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d')
 ORDER BY pf.`order` ASC
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top