2013-04-02 13 views
8

ich diese Tabellenstruktur mit Daten:MySQL in derselben Tabelle mit Nullzählung Zählwerte

INSERT INTO `test` (`id`, `email`, `id_user_ref`, `name`) VALUES 
(1, '[email protected]', NULL, 'Mike'), 
(2, '[email protected]', '1', 'Jhonny'), 
(3, '[email protected]', '1', 'Michael'), 
(4, '[email protected]', '2', 'Jorhe'), 
(5, '[email protected]', '3', 'Mia'); 

Ich brauche die id_user_ref für alle Benutzer mit dieser Abfrage zählen:

Dies funktioniert
SELECT id, COUNT(name) AS refNr FROM test GROUP BY id_user_ref 
HAVING id_user_ref IS NOT NULL; 

aber Das Problem ist, dass ich alle Ergebnisse anzeigen muss, selbst wenn das Zählergebnis 0 ist.

Ich habe mehrere Links Joins mit der gleichen Tabelle versucht, aber ohne Erfolg. sein

sollte die Ausgabe:

id refNr 
1 2 
2 1 
3 1 
4 0 
5 0 
+0

wollen Sie, wie viele Benutzer mike eingeladen zählen? dann kommst du in eine innere Verbindung von der Tabelle zu sich selbst :-) – Najzero

+0

Was ist die gewünschte Ausgabe, die du von dieser Abfrage erhalten möchtest? –

+0

Ich muss wissen, wie für jede Person, wie viele Personen haben ihre ID Ref einschließlich 0 –

Antwort

12

Versuchen Sie folgendes:

SELECT 
    t1.id, 
    IFNULL(COUNT(t2.name), 0) AS refNr 
FROM test AS t1 
LEFT JOIN test AS t2 ON t1.id = t2.id_user_ref 
GROUP BY t1.id; 

SQL Fiddle DEmo

Diese Sie geben:

| ID | REFNR | 
-------------- 
| 1 |  2 | 
| 2 |  1 | 
| 3 |  1 | 
| 4 |  0 | 
| 5 |  0 | 
+0

fehlerlos hinzu, danke. –

+1

@DspMarian - Sie sind jederzeit willkommen :) –

+0

'ON t1.id = t2.id_user_ref' macht keinen Sinn für mich. Diese Spalten sind gleich !? – C4u

Verwandte Themen