2015-06-27 27 views
2

我有一个数据库结构,像这样:如何将相同的ID和数据组合成一条记录?

Car 
- id 
- carname 
- image 
- category 
- status 

Parts 
- partid 
- partname 

CarParts 
- carpartid 
- carid(fk) 
- partid(fk) 
- amountid(fk) 

Category 
- id 
- categoryname 

Amount 
- amountid 
- amountvalue 

现在这是我的工作:

SELECT * FROM carparts 
INNER JOIN car on carparts.carpartid = car.id 

INNER JOIN parts on parts.partid = carparts.carpartid 

INNER JOIN amount on amount.amountid = carparts.amountid where status = 1 

这将返回重复的记录时,有在carparts表中的多个carpart。如何将carparts.id和car.id组合到一行,但仍然有多个部分名称用于该记录?

+0

提示:使用组 –

+0

您好我已经尝试使用其中一组返回,但我不能有一个记录多个部分名称? –

回答

0

试试这个。

SELECT * FROM car left join carparts on car.id = carparts.carpartid 
left join parts on parts.partid = carparts.carpartid 
left join amount on amount.amountid = carparts.amountid where status = 1 
group by car.id 

谢谢。

+0

请不要只是发布代码,解释它做什么以及为什么它是正确的做法。 – dimo414

+0

这不会给我一个记录的多个部分名称 –

0

您可以使用:

SELECT group_concat(parts.partname) as parts FROM car left join carparts on car.id = carparts.carpartid 
left join parts on parts.partid = carparts.carpartid 
left join amount on amount.amountid = carparts.amountid where status = 1 
group by car.id 

由于我们需要记录相结合,我们通过group by子句这样做。另外,因为我们需要一行中有多个记录,所以我们使用group_concat来连接多个结果。 P.S:group_concat返回的值的数量有一些限制吗?

+0

嗨,这只返回部分我还想要其余的数据 –

+0

@JakeDawsen:您可以检索其他列,如: 选择col1,col2,group_concat(parts.partname)作为零件.... –

相关问题