PHP MySQL将多列转换为多行

时间:2018-05-18 22:52:34

标签: php mysql

所以我有一个像这样结构化的数据库表......

$user->save();
$transaction->save();
$order = new Order();
$order->user_id = $user->id;
$user->orders()->save($order);
$transaction->orders()->save($order);
$order->products()->attach($cartItem->id, ['quantity' => $cartItem->qty]);

那些将是我的专栏,想象这是该数据库中的一行..

NAME | PHONE | EMAIL1 | EMAIL2 | EMAIL3

我需要能够将这些条目转储到CSV,我已经有了工作代码,但格式是问题。

我需要将每封电子邮件显示在一行中,并带有相应的名称和号码,格式如下......

John | 555-555-5555 | email1@website.com | email2@website.com | email3@website.com

我需要检索数千行并以这种方式显示它们,是否有某种方式使用PHP while循环我可以用这种格式显示数据库表中的行?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

此过程称为unpivoting。
最常见的是在MySQL中使用UNION ALL

SELECT 
   NAME
 , PHONE
 , EMAIL1 
FROM 
 table

UNION ALL 

SELECT 
   NAME
 , PHONE
 , EMAIL2 
FROM 
 table

UNION ALL 

SELECT 
   NAME
 , PHONE
 , EMAIL3 
FROM 
 table