COUNT(...) ohne Gruppierung



Hi!

Ich habe folgende Situation:

Tabelle 'namen':
| id | name |
-------------
| 1 | bli |
| 2 | blo |

Tabelle 'kommentare'
| id | nid | text |
-------------------
| 1 | 1 | abc |
| 2 | 1 | xyz |
| 3 | 2 | jkjk |


Nun möchte ich mit einem einzigen Query folgendes Resultat erhalten:
| name | text | anzahl |
-------------------------
| bli | abc | 2 |
| bli | xyz | 2 |
| blo | jkjk | 1 |


Mein erster Versuch war:
---
|SELECT namen.name,kommentare.text,COUNT(kommentare.text) AS anzahl
|FROM namen LEFT JOIN kommentare ON namen.id=kommentare.nid
---

Das hat natürlich nicht geklappt, weil COUNT ein GROUP BY verlangt.
Den LEFT JOIN mache ich, weil ich auch die Namen benötige, zu denen
es keinen Kommentar gibt.

Dann habe ich das Query angepasst:
---
|SELECT namen.name,kommentare.text,COUNT(kommentare.text) AS anzahl
|FROM namen LEFT JOIN kommentare ON namen.id = kommentare.nid
|GROUP BY namen.name
---

Das gibt mir zwar alle Namen und die jeweils korrekte Anzahl, aber
(auch darüber wundere ich mich nicht) zeigt nur einen einzigen
Kommentar pro Namen an.

Nun meine Frage an euch: Gibt es überhaupt eine Möglichkeit, mein
Resultat mit einem einzigen Query zu erhalten?

Vielen Dank für Tipps.

Gruss

Philipp
.



Relevant Pages

  • Re: Zugriff auf Active Directory
    ... FROM OPENQUERY(ADSI, ... An error occurred while preparing a query for execution against OLE DB ... Und denke daran die Anzahl der Zeilen, die Du mit der Query zurück bekommst, ...
    (microsoft.public.de.sqlserver)
  • ORDER BY ignoriert mit GROUP BY
    ... ich habe zwei Tabellen (table1, welche die Haupttabelle darstellt und table2, dessen Einträge sich auf table1 beziehen) welche ich mit einem LEFT JOIN verknüpfen zu versuche. ... Jetzt versuche ich alle Einträge aus table1 zu bekommen und zusätzlich die Anzahl der zugehörigen aus table2, umgekehrt geordnet nach dem table2 Timestamp jedoch um den "letzten" zu erhalten. ... LEFT JOIN table2 ON table2.t1ref=table1.id ... beim Einsatz von GROUP BY offenbar die Sortierung ignoriert wird und ich somit nicht den letzten Eintrag erhalte. ...
    (de.comp.datenbanken.mysql)