Alexandre Guion <[EMAIL PROTECTED]> wrote:
I tried this one of course, and it doesn't work, it could be a bug. It
returns every property for every medium (not just 'myprops')

This one is tested and appears to work:

SELECT
   m.MediumID AS id,
   IFNULL(MAX(pn.Text), '') AS name,
IFNULL(MAX(CASE WHEN pn.Text IS NULL THEN NULL ELSE pv.Text END), '') AS value
FROM Media AS m
   LEFT JOIN MediumPropMap AS mpm ON mpm.MediumID=m.MediumID
   LEFT JOIN Property AS p ON (mpm.PropID=p.PropID AND p.UserID=1)
   LEFT JOIN PropName AS pn ON
       (p.PropNameID=pn.PropNameID AND pn.Text='myprop')
   LEFT JOIN PropValue AS pv ON p.PropValueID=pv.PropValueID

GROUP BY m.MediumID ORDER BY value;


Each group produced by GROUP BY can have only one non-NULL value in pn.Text (assuming each medium may have no more than one of each property). MAX aggregate is simply used to pick up this single non-NULL value, and the corresponding pv.Text

Igor Tandetnik

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to