I've tried several different methods, but can't quite get the information I need in a single query.
The main hurdle to get over is that I need to return these rows (all 16 of them) no matter what, even if the result is NULL/blank, and have them in a specific order.
I've tried to sort the results in a specific order, turning rows into columns (which the following query does - but not efficiently), and using different variations of IF/WHEN statements.
Doing an ORDER BY doesn't quite work for my needs because if their COUNT is null, it doesn't show in the resultset.
Is there a way to 'force' results into rows? If so, then that method would work perfectly [i.e. if COUNT(crd_class) for 'Ar' is NULL, then result='0', else COUNT(crd_class) ] - I can't figure out the syntax.
Is there a specific mySQL function that will convert rows into columns?
Anyway, here's the query I'm using
SELECT
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Ar' GROUP by crd_class) Ar,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='As' GROUP by crd_class) As,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Mk' GROUP by crd_class) Mk,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Sc' GROUP by crd_class) Sc,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Wa' GROUP by crd_class) Wa,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Bd' GROUP by crd_class) Bd,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Dr' GROUP by crd_class) Dr,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='He' GROUP by crd_class) He,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Wi' GROUP by crd_class) Wi,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Ap' GROUP by crd_class) Ap,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Pa' GROUP by crd_class) Pa,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Sp' GROUP by crd_class) Sp,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Co' GROUP by crd_class) Co,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Re' GROUP by crd_class) Re,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Pe' GROUP by crd_class) Pe,
(SELECT COUNT(crd_class) FROM credits WHERE crd_class='Ra' GROUP by crd_class) Ra
FROM credits WHERE mem_id='1' GROUP BY mem_id
Start Free Trial