2016-11-21 2 views
2

Ich habe die folgende Datenbank:Nutzungsbedingungen in GROUP_CONCAT

+-------+-------------+---------+ 
| id | Name  | Quantity| 
+-------+-------------+---------+ 
| 1  | Anna  | 0  | 
| 2  | John  | 5  | 
| 3  | Anna  | 3  | 
+-------+-------------+------+ 

Ich bin mit dieser Abfrage:

SELECT name, GROUP_CONCAT(DISTINCT quatity SEPARATOR ', ') 
FROM table 
GROUP BY name; 

Als Ergebnisse, die ich diese bekam:

Anna: 0 , 3
John: 5

Jedoch habe ich so etwas wie dies wollen:

Anna: 3 (Ich will nicht Menge = 0 zeigen)
John: 5

Ich habe das versucht, aber es hat nicht funktioniert:

GROUP_CONCAT(DISTINCT 
    CASE 
    WHEN quantity > 0 THEN name 
    else null 
    END 
    ORDER BY name ASC SEPARATOR ', ') 
+1

'Name' muss möglicherweise mit einem Häkchen versehen werden, es ist ein MySQL-Schlüsselwort. 'Quantity'! =' Quatity' Gibt es hier nur ein paar Tippfehler? –

+3

Verwenden Sie eine 'WHERE'-Klausel mit Negationsoperator –

Antwort

1

Jemand schlug vor, dies aber ich werde es in einer Antwort setzen:

SELECT id, name, GROUP_CONCAT(DISTINCT quantity SEPARATOR ', ') 
FROM table 
WHERE quantity > 0 
GROUP BY id, name; 

Auch scheinen Sie mit der Menge, einige Fehler zu haben * und id * statt Artikelnummer, zumindest nach dein Tisch. Außerdem empfehle ich, sowohl id als auch name in die select-Anweisung und die group by-Anweisung einzufügen.