J'avais besoin d'une liste des utilisateurs d'un site avec leur propriétés de profil en colonne (en l'occurence Prénom, nom, age et ville). Après avoir essayé un PIVOT SQL j'ai laissé tombé et suis revenu à une requete plus simple mais vraiment pas belle; de plus sans doute assez gourmande en cpu et mémoire (4 jointures !)
Ceci dit ça marche et ça dépanne, mais je suis preneur d'une solution plus élégante (sans écrire un module évidemment, le but étant de se contenter d'une requete SQL)
Technique: repérer l'id des PropertyDefinitionID (ici 21, 23, 40 et 27), et exécuter dans un module report :
SELECT a.userid,
a.propertyvalue 'Prénom',
b.propertyvalue 'Nom',
c.propertyvalue 'Date naiss.',
d.propertyvalue 'Ville'
FROM
userprofile a,
userprofile b,
userprofile c,
userprofile d
where
a.userid=b.userid AND
a.userid=c.userid AND
a.userid=d.userid AND
a.propertydefinitionid = 21 AND
b.propertydefinitionid = 23 AND
c.propertydefinitionid = 40 AND
d.propertydefinitionid = 27
order by b.propertyvalue