PHP MySQL конвертировать несколько столбцов в несколько строк

0

Итак, у меня есть таблица базы данных, которая структурирована примерно так...

NAME | PHONE | EMAIL1 | EMAIL2 | EMAIL3

Это будут мои столбцы, представьте, что это строка в этой базе данных.

John | 555-555-5555 | [email protected] | [email protected] | [email protected]

Мне нужно иметь возможность сбрасывать эти записи в CSV, у меня есть код для работы уже, но формат является проблемой.

Мне нужно, чтобы каждое электронное письмо отображалось в одной строке с соответствующим именем и номером в следующем формате...

John | 555-555-5555 | [email protected]
John | 555-555-5555 | [email protected]
John | 555-555-5555 | [email protected]

Мне нужно получить тысячи строк и отобразить их таким образом, есть ли способ использовать цикл PHP while. Я могу отображать строки из таблицы базы данных в этом формате? Любая помощь приветствуется.

  • 0
    Да, есть способ. Но я боюсь, что вы должны сделать первый шаг и действительно попробовать что-то. (просто переберите строки и добавьте 3 элемента в строке в массив. И, возможно, проверьте, есть ли что-то в каждом столбце)
  • 2
    Почему у тебя такой стол в первую очередь? Что делать, если у кого-то более 3 писем? Вам следует нормализовать данные, поместив электронные письма в отдельную таблицу с 1 строкой на каждое электронное письмо.
Показать ещё 2 комментария
Теги:

1 ответ

1

Этот процесс называется непривязанным.
И чаще всего выполняется с UNION ALL в MySQL.

SELECT 
   NAME
 , PHONE
 , EMAIL1 
FROM 
 table

UNION ALL 

SELECT 
   NAME
 , PHONE
 , EMAIL2 
FROM 
 table

UNION ALL 

SELECT 
   NAME
 , PHONE
 , EMAIL3 
FROM 
 table
  • 0
    Мы также могли бы опустить строки, имеющие значения NULL для столбца электронной почты, добавив предложение WHERE к каждому SELECT. Чтобы применить ORDER BY ко всему набору, мы можем заключить каждый SELECT в скобки, а затем добавить предложение ORDER BY после последнего закрывающего скобка. +10.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню