Abfrage mit Left Join - was stimmt nicht?

Beginner78

Grünschnabel
Hallo,

Mit unten aufgeführter SQL-Abfrage möchte ich aus einer Tabelle Kunden die Namen der Kunden und aus einer Tabelle Email die Anzahl der Email Adressen rausfiltern. Bzgl. der Email Adressen: 1 Kunde hat mehrere email Adressen. Es soll also angezeigt werden, wieveiel Email Adressen JEDER Kunde hat.
Was funktioniert nun nicht? Wenn ein Kunde KEINE email Adresse hat, soll er trotzdem angezeigt werden - Im Feld Anzahl soll 0 stehen.

Kann mir jemand helfen was hier falsch ist?

--------------------------------------
select k.name, ifnull (count(e.adresse), "0" ) as Anzahl from kunden k
left join email e on k.kid = e.kid
group by k.name
order by Anzahl DESC
limit 10;
-------------------------------------

Vielen Dank
Beginner
 
Welches DBMS benutzt Du?
Wie lautet die Fehlermeldung?

MySQL zickt teilweise rum, wenn Du zwischen Funktionsname (ifnull) und der zugehörigen öffnenden Klammer ein Leerzeichen hast.

Die Abfrage auf null wäre in MySQL auch nicht nötig, da COUNT(expr) nur Werte ungleich null zählt.

Gruß hpvw

PS: Bitte nutze die Code Tags, z.B. [code=php]code[/code] für PHP-Quelltexte, [code=html]code[/code] für HTML-Quelltexte, eins der Tags actionscript, ada, apache, asm, asp, bash, c, c_mac, caddcl, cadlisp, cpp, csharp, css, d, delphi, diff, div, eiffel, gml, html4strict, java, javascript, lisp, lua, matlab, mpasm, nsis, objc, oobas, oracle8, pascal, perl, php-brief, python, qbasic, smarty, sql, vb, vbnet, vhdl, visualfoxpro, xml für die entsprechenden Sprachen und [code]code[/code] für sonstige Quelltexte. Das macht die Quelltexte übersichtlicher.
Für kurze Code-Teile im Fließtext (z.B. Variablen- oder Funktionsnamen) kannst Du [mono]kurzer Code-Fetzen[/mono] verwenden.
 

Neue Beiträge

Zurück