Pregunta

Tengo problemas con una consulta SQL utilizada para mostrar campos de perfil personalizados y cualquier valor correspondiente (opcional).

Aquí está la consulta SQL que estoy usando:

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

El problema que tengo es que las columnas sin registros correspondientes de profile_values ?? no se muestran en absoluto, cuando deberían mostrarse, sino solo con un valor vacío.

¡Muchas gracias!

¿Fue útil?

Solución

Intente mover las condiciones de los valores del perfil a la declaración 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top