У меня есть таблица:
id first last institution address space1_1_value space1_2_value space2_1_value space2_2_value space3_1_value space3_2_value agreement
(Это сокращает количество полей, например, ради).
Сначала мне нужно было разбить каждую группировку «space x» (т.е. space1.x, space2.x, space3.x) на свои собственные ROWS (хотя все данные были в 1 записи / строке)
id | первая | последняя | учреждения | адрес | space1_1_value | space1_2_value | соглашение
Если в space2_1_value есть значение, тогда:
id | первая | последняя | учреждения | адрес | space2_1_value | space2_2_value | соглашение
Если в space3_1_value есть значение, то:
id | первая | последняя | учреждения | адрес | space3_1_value | space3_2_value | соглашение
Это было разработано с использованием следующего запроса:
SELECT first, last, space1_1_value as space_value FROM report UNION ALL SELECT first, last, space2_2_value as space_value FROM report WHERE space2_2_value <> '' UNION ALL SELECT first, last, space3_3_value as space_value FROM report WHERE space3_3_value <> '' ORDER BY first
Однако мне было поручено разбить это еще дальше, но я не уверен, возможно ли это с запросом или, если это действительно нужно сделать на стороне бэкэнда / PHP?
Поэтому соблюдайте приведенную выше директиву (что является требованием):
Поэтому для каждой группы SPACE1.x есть столбец с запятыми значениями в нем.
Для этого мы будем говорить, что все space1_2_value, space2_2_value & space3_3_value cols содержат что-то вроде:
March 3,March 5,March 6 March 1,March 2 Feb 27
например.
Таким образом, каждый столбец может иметь от 1 до многих значений с разделителями-запятыми.
Есть ли способ в MySQL разбить эти значения и вернуть строку зеркалирования для каждого из них? Или что-то, что необходимо сделать на стороне бэкэнда (PHP)?
Я дал несколько минут, чтобы попытаться подумать, как бы я сделал это на PHP.
Но я получаю пойманные петли foreach () без индекса? (или просто простой для () цикл WITH с индексом, но не много накладных расходов, чтобы проверить, пусто ли каждое значение $ (вручную).