То, что вам нужно сделать, это добавить столбцы, пока вы повторяете строки. Возможно, сначала выполнить небольшой запрос, выбрав столбцы:
SELECT
*
FROM assignment_tasks
ORDER BY
Assignment_ID ASC,
Task_ID ASC;
Затем адаптируйте запрос на загрузку массива, который вы описали, для заказа пользователем, назначения, задачи. Таким образом, значения в массиве находятся в том же порядке, что и в таблице (строка за строкой, слева направо). Если значение отсутствует (или NULL, не имеет значения), напечатайте U.
Конечно, это связано с предположением о том, что количество назначений и задач невелико по сравнению с количеством записей в массиве.