Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将两个数据库行的结果压缩成一行?_Mysql - Fatal编程技术网

Mysql 如何将两个数据库行的结果压缩成一行?

Mysql 如何将两个数据库行的结果压缩成一行?,mysql,Mysql,我有一个mysql db查询,我想把它压缩成一行。输出当前为两行,并且将永远仅为两行。我第一次得到两行的原因是,总是有一个主电话号码和一个辅助电话号码与我的结果关联 因为除了phone type(ptype)和second phone number之外,这两行的所有数据都是完全相同的,所以我只想将这两列附加到forst行 我知道这是可以做到的,但我不记得怎么做了 以下是我正在使用的代码: SELECT c.name, c.address1, p.ptype, p.phone FROM custo

我有一个mysql db查询,我想把它压缩成一行。输出当前为两行,并且将永远仅为两行。我第一次得到两行的原因是,总是有一个主电话号码和一个辅助电话号码与我的结果关联

因为除了phone type(ptype)和second phone number之外,这两行的所有数据都是完全相同的,所以我只想将这两列附加到forst行

我知道这是可以做到的,但我不记得怎么做了

以下是我正在使用的代码:

SELECT
c.name,
c.address1,
p.ptype,
p.phone
FROM
customer AS c
Inner Join customeremp AS e ON c.customer_id = e.customer_id
Inner Join customerphone AS p ON e.customer_seq = p.customer_seq
WHERE
c.customer_id =  '1'

您需要在电话表上创建2个连接

 SELECTc.name,
 c.address1,
 p.ptype,
 p.phone,
 p2.ptype,
 p2.phone,
 FROMcustomer AS cInner 
 Join customeremp AS e ON   c.customer_id = e.customer_idInner 
 Join customerphone AS p ON e.customer_seq = p.customer_seq and p.pType = 1 (or whatever private means)
 Join customerphone AS p2 ON e.customer_seq = p2.customer_seq and p2.pType = 2 (or whatever the other type is)
 WHEREc.customer_id =  '1'
编辑:此查询仅返回设置了两种电话类型的客户。如果它们是可选的,那么您应该考虑将连接更改为外部连接< /p> 尝试:
SELECT
   c.name,
   c.address1,
   IF(p.ptype = 'primary', p.phone, null)),
   IF(p.ptype = 'secondary', p.phone, null))
FROM customer JOIN (blah blah)
WHERE customer_id = 1
GROUP BY c.name, c.address1

如果它不起作用,您可能需要在最后两个字段上放置聚合函数,例如:
MAX(如果(p.ptype…

您首先得到它…:)非常感谢。嗨,尼克,谢谢你的努力。我以前做过,但不记得是怎么做的。海科·哈茨菲尔德把它钉住了,当我看到它时,它又回到了我的脑海。我知道就是这样。嗨,布莱纳利,谢谢你的帮助。你也得到了。如果我能投票支持这个,我会的,但我不是会员,所以非会员不能投票支持或反对。谢谢你的帮助p和努力。
select c.name,c.address1,primary.phone,secondary.phone
  from customer c
  join customeremp e
    on c.customer_id = e.customer_id
  join customerphone primary
    on primary.ptype = 'primary'
   and e.customer_seq = primary.customer_seq
  join customerphone secondary
    on secondary.ptype = 'secondary'
   and e.customer_seq = secondary.customer_seq
 where c.customer_id =  '1'