2017-07-01 4 views
0

Ich versuche, Daten aus meiner Datenbank auszuwählen. Wenn der zurückgegebene Wert = NULL ist, möchte ich 0 anstelle von NULL anzeigen.Angezeigter Wert als 0 anstelle von NULL

ich es mit der folgenden Aussage versuchen:

IF(inv1.id != '', COUNT(inv1.id), '0') AS invoice_count, 

Wenn ich die Anweisung ausführen noch ich NULL bekommen. Weiß jemand, warum ich immer noch NULL bekomme?

Hier ist meine vollständige Erklärung:

SELECT cus.cus_id, cus.name_cus, cus.contact, cus.place, cus.address, inv1.invoice_count, inv1.invoice_total, cus.status, cus.id FROM cus 
LEFT OUTER JOIN (
    SELECT inv1.cus_id, 
    IFNULL(COUNT(inv1.id), 0) AS invoice_count, 
    IFNULL(CONCAT('€ ', FORMAT(SUM(inv1.total),2)), 0) as invoice_total 
    FROM invoice inv1 
    GROUP BY inv1.cus_id 
) inv1 
ON cus.cus_id = inv1.cus_id 
WHERE cus.user_id='2' 
+1

können Sie bitte Tabellenschema und eine vollständige Abfrage bereitstellen? – shashankqv

+0

Ist die Rechnung eine Tabelle oder ein Schema? – Alexander

+0

Rechnung ist eine Tabelle – John

Antwort

1

Sie IFNULL Funktion von MySQL verwenden können.

IFNULL(COUNT(inv1.id), '0') AS invoice_count 

Aktualisierungsabfrage: Bitte verwenden Sie unter Abfrage

SELECT cus.cus_id, cus.name_cus, cus.contact, cus.place, 
cus.address, ifnull(inv1.invoice_count,0), 
ifnull(inv1.invoice_total,0), 
cus.status, cus.id FROM cus 
LEFT OUTER JOIN (
    SELECT inv1.cus_id, 
    COUNT(inv1.id) AS invoice_count, 
    FORMAT(SUM(inv1.total),2) as invoice_total 
    FROM invoice inv1 
    GROUP BY inv1.cus_id 
) inv1 
ON cus.cus_id = inv1.cus_id 
WHERE cus.user_id='2'; 
+0

Es zeigt immer noch 'NULL' – John

+0

@ John, siehe [' IFNULL' Funktionsbeschreibung] (https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_ifnull). Wenn der erste Ausdruck 'NULL' zurückgibt, gibt die Funktion den zweiten Ausdruck zurück. @shashankqv sind richtig. – Alexander

+0

@john teilen Sie Ihre vollständige Abfrage hier. – shashankqv

1

Versuchen Sie folgendes:

IFNULL(COUNT(inv1.id), 0) AS invoice_count 

IFNULL kehrt der Ausdruck 1 die COUNT(inv1.id) in Ihrem Fall ist, wenn es nicht NULL ist anders gibt den Ausdruck 2 zurück, der 0 i ist in deinem Fall.

+0

Es zeigt immer noch "NULL" – John

+0

@John: Bitte teilen Sie Ihren Code. –

+0

Ich habe meine Frage mit der vollständigen Aussage aktualisiert – John

Verwandte Themen