2017-05-29 6 views
0

Ich habe eine Tabelle, die ein Produkt anzeigt, aber mit anderen Lieferanten.Wie kann ich zwei verschiedene Zeilen zu einer Zeile zusammenführen?

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:

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

Wie kann ich Zusammenführen von zwei verschiedenen Lieferanten in einer Spalte? dies wie:

enter image description here

Antwort

1

Sie Group_concat auf dem product_supplier_reference nutzen könnten, nehmen diese alle Werte aus einer Gruppe von Klausel und erstellt ein einzelnes Feld von ihm.

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

Obwohl Sie ps.product_supplier_url als supp_url entfernen müssen können - sehen, wie es zuerst funktioniert.

Ich würde auch empfehlen, das Gebäude von Dingen wie Links zum Frontend zu bewegen, da dies es für den Programmierer flexibler macht, es zu ändern, wenn sich Dinge ändern - anstatt mit komplexen SQL-Anweisungen herumzualbern.

Verwandte Themen