The code proposed did not seem to work (or I got confused changing the tables and fieldnames into my actual tables and fieldnames). I came up with something that DOES seem to ALMOST produce exactly the result I'm shooting for, but not quite.
{
I believe my error is in the construction of the answer columns, i.e.
GROUP_CONCAT(if(DATA_A.SRV_ITEMID='1008', DATA_A.ANSWER, NULL)) AS 'A_1',
}
...the above construction outputs umpteen copies of the answer value in each answer column (because of the group_concat syntax) I only want the answer string once
But the following is real close...
SELECT SRV_YOKEDDATA.*,
PROTS_A.RESPONDER AS TESTER_A,
GROUP_CONCAT(if(DATA_A.SRV_ITEMID='1008', DATA_A.ANSWER, NULL)) AS 'A_1',
GROUP_CONCAT(if(DATA_A.SRV_ITEMID='1009', DATA_A.ANSWER, NULL)) AS 'A_2',
GROUP_CONCAT(if(DATA_A.SRV_ITEMID='1010', DATA_A.ANSWER, NULL)) AS 'A_3',
PROTS_B.RESPONDER AS TESTER_B,
GROUP_CONCAT(if(DATA_B.SRV_ITEMID='1008', DATA_B.ANSWER, NULL)) AS 'B_1',
GROUP_CONCAT(if(DATA_B.SRV_ITEMID='1009', DATA_B.ANSWER, NULL)) AS 'B_2',
GROUP_CONCAT(if(DATA_B.SRV_ITEMID='1010', DATA_B.ANSWER, NULL)) AS 'B_3'
FROM SRV_YOKEDDATA
LEFT JOIN SRV_PROTOCOLS AS PROTS_A ON SRV_YOKEDDATA.SRV_PROTOCOLID_A=PROTS_A.SRV_PROTOCOLID
LEFT JOIN SRV_PROTOCOLS AS PROTS_B ON SRV_YOKEDDATA.SRV_PROTOCOLID_B=PROTS_B.SRV_PROTOCOLID
LEFT JOIN SRV_DATA AS DATA_A ON SRV_YOKEDDATA.SRV_PROTOCOLID_A=DATA_A.SRV_PROTOCOLID
LEFT JOIN SRV_DATA AS DATA_B ON SRV_YOKEDDATA.SRV_PROTOCOLID_B=DATA_B.SRV_PROTOCOLID
GROUP BY SRV_YOKEID
It seems that it is the construction of the answer columns (ie A_1, A_2... B_1, B2...) that is the problem...