Как отобразить данные из двух разных таблиц в одну, объединив данные с одинаковым идентификатором в одну строку? - PullRequest
0 голосов
/ 11 января 2019

Я хочу отобразить содержимое двух таблиц в одну, одна таблица содержит сведения о продукте, а другая - изображения или сведения о продукте. Я загружаю больше, чем изображение, для одного продукта. Я хочу, чтобы он отображался следующим образом: если для одного продукта есть 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 голосов
/ 11 января 2019

=> попробуйте это: -

Используйте левое соединение, чтобы получить из левой таблицы все данные и соответствующие записи из правой таблицы.

$sql= "select P1.*, group_concat(I2.image) images
    from product P1
    left join images I2 on P1.id=I2.pid";
0 голосов
/ 11 января 2019

Вы не можете создавать различное количество столбцов, но можете объединить все изображения, разделенные запятой, с помощью функции 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" />'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...