sql - 'Compact' SELECT results in mySQL -
is there anyway 'compact' results of sql query?
the results like:
+----+-----------+----------+-----------+-------------+--------+ | id | firstname | lastname |   hobby   |     job     |  age   | +----+-----------+----------+-----------+-------------+--------+ | 1  | john      | doe      | (null)    | (null)      | 30     | | 1  | john      | doe      | chess     | (null)      | (null) | | 2  | adam      | jackson  | (null)    | accountant  | (null) | | 2  | adam      | jackson  | (null)    | (null)      | 55     | | 3  | michael   | smith    | knitting  | (null)      | (null) | | 3  | michael   | smith    | (null)    | banker      | (null) | +----+-----------+----------+-----------+-------------+--------+   but this:
+----+-----------+----------+-----------+-------------+--------+ | id | firstname | lastname |   hobby   |     job     |  age   | +----+-----------+----------+-----------+-------------+--------+ | 1  | john      | doe      | chess     | (null)      | 30     | | 2  | adam      | jackson  | (null)    | accountant  | 55     | | 3  | michael   | smith    | knitting  | banker      | (null) | +----+-----------+----------+-----------+-------------+--------+   i tried using group by accepts first custom field database each person.
i've setup sql fiddle here: http://sqlfiddle.com/#!9/39563/2
the setup little odd need keep structure due database i'm working on.
you can use max aggregate function group by flatten result this:
select    p.id "user id",    p.firstname firstname,    p.lastname lastname,   max(case when cf.fieldname = 'hobby' cfv.value end) "hobby",   max(case when cf.fieldname = 'job'   cfv.value end) "job",   max(case when cf.fieldname = 'age'   cfv.value end) "age" customfields cf  join customfieldvalues cfv on cfv.fieldid = cf.id join people p on cfv.relid = p.id cf.fieldname in ('hobby', 'job', 'age') group p.id, p.firstname, p.lastname  order p.id;   also, string literals should enclosed in single-quotes, , can use aliases reduce query text , make more readable.
Comments
Post a Comment