2017-03-01 103 views
0

我有1列编号为0称为product_attribute_id和一个需要组product_id,因为它是0(东西一样,如果记录为0,则与列名重整旗鼓product_idSQL重新组合只选择记录

我可以”只是做GROUP BY,因为我的其他记录将会消失。它只需要组时,我product_attribute_id有记录0在它与我的叫product_id

SELECT 
    od.id_order_detail, 
    od.id_order, 
    od.product_id, 
    od.product_attribute_id, 
    od.product_name, 
    (od.product_quantity) AS 'Total closed' 
FROM 
    ex.ps_order_detail od 
WHERE 
    od.product_id IN (SELECT DISTINCT 
      p.id_product 
     FROM 
      ex.ps_product p 
     WHERE 
      p.id_manufacturer = '1') 
ORDER BY od.product_attribute_id , od.product_id DESC 

enter image description here

我的其他记录需要留只0需要记录与另一列

到Groep的其它表
+1

添加示例表数据和预期结果 - 以及格式化文本! – jarlh

+0

你正在使用哪些DBMS?您的列别名是无效的标准SQL。 –

+0

我正在使用MariaDB – Deniz

回答

0

您可以使用聚合。目前还不清楚你想要的许多列的组合行。下面是一个猜测:

SELECT MAX(od.id_order_detail) as id_order_detail, 
     MAX(od.id_order) as id_order, 
     (CASE WHEN product_attribute_id > 0 THEN product_attribute_id END) as product_attribute_id, 
     MAX(od.product_attribute_id) as product_attribute_id, 
     od.product_name, 
     SUM(od.product_quantity) AS TotalClosed 
FROM ex.ps_order_detail od 
WHERE od.product_id IN (SELECT p.id_product 
         FROM ex.ps_product p 
         WHERE p.id_manufacturer = 1 -- ids are probably not strings 
         ) 
GROUP BY product_id, product_name, 
     (CASE WHEN product_attribute_id > 0 THEN product_attribute_id END) 
ORDER BY product_attribute_id, product_id DESC;