2017-03-01 7 views
0

Ich habe 1 Spalte mit der Nummer 0 genannt product_attribute_id und dass man muss Gruppe mit product_id weil es 0 (so etwas wie wenn Datensatz 0 ist, dann mit Spaltennamen product_id umgruppieren)SQL Neugruppierung nur ausgewählte Datensätze

ich kann‘ t tu nur GROUP BY, weil meine anderen Datensätze weg sind. Es braucht nur zu einer Gruppe, wenn meine product_attribute_id eine Aufzeichnung 0 in es mit meinem anderen Tisch namens 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

Meine anderen Aufzeichnungen nur Datensätze mit 0 Bedürfnissen bleiben muss, mit anderen Spalt

groep
+1

Fügen Sie Beispieltabellendaten und das erwartete Ergebnis hinzu - auch formatierten Text !!! – jarlh

+0

Welches DBMS benutzen Sie? Ihr Spaltenalias ist ungültiges Standard-SQL. –

+0

Ich benutze MariaDB – Deniz

Antwort

0

Sie können Aggregation verwenden. Es ist unklar, was Sie für die kombinierten Zeilen für viele der Spalten möchten. Hier ist eine Schätzung:

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; 
Verwandte Themen