Domanda

Sto riscontrando problemi con una query SQL utilizzata per visualizzare i campi del profilo personalizzato e qualsiasi valore (facoltativo) corrispondente.

Ecco la query SQL che sto 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

Il problema che sto riscontrando è che le colonne senza record profilo_valori corrispondenti non vengono mostrate affatto, quando dovrebbero essere mostrate, ma solo con un valore vuoto.

Mille grazie!

È stato utile?

Soluzione

Prova a spostare le condizioni dei valori del profilo nell'istruzione 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top