簡體   English   中英

如何將兩個不同的行合並為一行?

[英]How can I merge two different rows into one row?

我有一張桌子,上面顯示一個產品,但是有不同的供應商。

在此處輸入圖片說明

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:

$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";
    }

如何將兩個不同的供應商合並為一列? 像這樣:

在此處輸入圖片說明

您可以在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";

盡管您可能必須將ps.product_supplier_url刪除為supp_url,但請先查看其工作原理。

我還建議將諸如鏈接之類的結構移動到前端,因為這樣可以使程序員在事情發生變化時更靈活地進行更改-而不是搞亂復雜的SQL語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM