通过将具有相同id的数据合并到一行中,如何将两个不同表中的数据显示为一个?

时间:2019-01-11 06:32:22

标签: php html database mysqli

我想将两个表的内容显示为一个,一个表包含产品详细信息,另一个表包含一个图像或产品详细信息,对于单个产品,我上传的图像比图像更多。我想显示它,如果一个产品有3张图像,则3张图像应与产品详细信息显示在同一行。 我该怎么办?

表1

id  pname   prodes  cat sucat   
76  bsb sbfb    fbfb    fdbfdb  
77  gripperr    black slim 7    pen ball pen    
78  technotip   black slim 7    pen ball pen    
79  gripperr    blue ink    rtnrtn  ball pen    
80  gripperr    blue ink    rtnrtn  ball pen    
82  vfdv    fdb fdbdf   bdfbdfb 

表2

id  pid image   
4   76  1.jpg   
5   76  2.jpg   
6   76  3.jpg   
7   77  a.jpg   
8   77  b.jpg   
9   77  c.jpg   
10  78  img_20171004_064140-1547183108.jpg  
11  78  img_20171008_110354-1547183108.jpg  
12  78  v-1547183108.jpg    
13  79  aegi-1547183474.jpg 
14  79  b-1547183474.jpg    
15  79  c-1547183474.jpg    
16  80  aegi-1547183595.jpg 
17  80  b-1547183595.jpg    
18  80  c-1547183595.jpg    
20  82  yg-1547186213.jpg   
21  82  yoongi-1547186213.jpg   

我想要它

id  pname   prodes  cat sucat   
76  bsb sbfb    fbfb    fdbfdb                    1.jpg   2.jpg  3.jpg
77  gripperr    black slim 7    pen ball pen  a.jpg   b.pjp  c.jpg  
78  technotip   black slim 7    pen ball pen    
79  gripperr    blue ink    rtnrtn  ball pen    
80  gripperr    blue ink    rtnrtn  ball pen    
82  vfdv    fdb fdbdf   bdfbdfb 

2 个答案:

答案 0 :(得分:1)

您不能创建不同数量的列,但是可以使用mysql函数group_concat连接所有用逗号分隔的图像

select t1.*, group_concat(t2.image) as images
from table1 as t1
left join table2 as t2 on t1.id=t2.pid

回答评论

您还需要一个循环,就像

foreach(explode(',', $row['image'] as $url) {
   $imageURL = 'pictures/'.$url;
   echo '<img src="<?php echo $imageURL; ?>" alt="" width="100" height="100" />'
}

答案 1 :(得分:1)

=>试试这个:-

使用左连接从左表获取所有数据,并从右表获取匹配的记录。

$sql= "select P1.*, group_concat(I2.image) images
    from product P1
    left join images I2 on P1.id=I2.pid";