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