2017-05-29 30 views
0

私はテーブルを持っていますが、1つの製品を表示していますが、サプライヤは異なっています。2つの異なる行を1つの行にマージするにはどうすればよいですか?

enter image description here

SQL:

$q=3000;  
$sql="SELECT product_id, product_reference AS kood,product_name AS nimetus,product_quantity AS nr, pl.link_rewrite,psa.quantity as kogukogus,ps.product_supplier_reference as supp_ref,ps.product_supplier_url as supp_url, p.location AS asukoht, 
     CONCAT(c.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') link 
     FROM ps_order_detail o 
     JOIN ps_product_lang pl on o.product_id = pl.id_product 
     JOIN ps_product p on p.id_product = pl.id_product 
     JOIN ps_stock_available psa on p.id_product = psa.id_product 
     JOIN ps_category_lang c on c.id_category = p.id_category_default 
     JOIN ps_product_supplier ps on p.id_product = ps.id_product 
     WHERE pl.id_lang=2 AND c.id_lang=2 AND id_order= '".$q."'"; 

PHP:私は1つの列に二つの異なるサプライヤーをマージすることができますどのように

$rs=$ib->query($sql); 
if (PEAR::isError($rs)) die($rs->getMessage()); 

if($rs) { 

    while($r = $rs->fetchRow(MDB2_FETCHMODE_ASSOC)) { 
     $supref=$r["supp_ref"]; 
     if($supref!="" || $supref!=null){ 
      $suppref=$supref; 
     } 

     $out .= "\n".'<tr>'; 
     //Pildi lingi leidmine 
     $rs2=$ib->query("SELECT id_image FROM ps_image WHERE id_product=".$r["product_id"]." AND cover=1"); 
     while($r2 = $rs2->fetchRow(MDB2_FETCHMODE_ASSOC)) { $ids=$r2["id_image"]; } 
      //Kui on lisame pildid 
      if (!isset($_GET["ni"])) 
       $out .= '<td><a href="'.getImageLink(STRIPSLASHES($r["link_rewrite"]),$ids, 'large').'"><img src="'.getImageLink(STRIPSLASHES($r["link_rewrite"]),$ids, 'small').'" /></a></td>'; 

      //Tabeli tekstiosa 
      $out .= '<td><b><font size=+1>'.$r["kood"].'</font></b> - <a href="'.$vmpath.$r["link"].'" target=_new>'.$r["nimetus"].'</a><br> '.$r["tootja_kood"].' </td><td><a>'.$suppref.'</a></td><td>'.$r["nr"].'</td><td>'.$r["kogukogus"].'</td><td><b>'.$r["asukoht"].'</b></td></tr>'; 
     } 

     $out .="\n</table>\n"; 
    } 

?このように:

enter image description here

答えて

1

あなたはproduct_supplier_referenceにGROUP_CONCATを使用することができ、これはgroup by句からのすべての値を取り、それから、単一のフィールドを作成します。

$sql="SELECT product_id, product_reference AS kood,product_name AS nimetus,product_quantity AS nr, pl.link_rewrite,psa.quantity as kogukogus,group_concat(ps.product_supplier_reference) as supp_ref,ps.product_supplier_url as supp_url, p.location AS asukoht, 
     CONCAT(c.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') link 
     FROM ps_order_detail o 
     JOIN ps_product_lang pl on o.product_id = pl.id_product 
     JOIN ps_product p on p.id_product = pl.id_product 
     JOIN ps_stock_available psa on p.id_product = psa.id_product 
     JOIN ps_category_lang c on c.id_category = p.id_category_default 
     JOIN ps_product_supplier ps on p.id_product = ps.id_product 
     WHERE pl.id_lang=2 AND c.id_lang=2 AND id_order= '".$q."' 
     GROUP BY product_id, kood,nimetus,nr,pl.link_rewrite, kogukogus,supp_url,asukoht, link"; 

supp_urlとしてps.product_supplier_urlを削除する必要がありますが、最初にどのように動作するかを確認してください。

フロントエンドへのリンクのようなもののビルディングを移動することもお勧めします。これは、複雑なSQL文を使いこなすのではなく、変更時にプログラマが柔軟に変更できるようにするためです。

関連する問題