[英]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.