2016-07-21 4 views
1

Ich habe eine Tabelle namens story_comment mit (Ganzzahl) Spalten story_id und comment_id. Ich möchte wissen, wie viele Kommentare jede Geschichte hat, aber ich bin nicht sicher, der beste Weg, die SQL-Abfrage zu schreiben.SQL Get Anzahl aller Zeilen, die die gleiche ID haben

Die Abfrage sollte eine Tabelle mit den Spalten story_id und num_comments zurückgeben (wobei num_comments für die Anzahl der Zeilen in story_comment steht, wobei story_id mit der story_id in der Ergebniszeile identisch ist).

gewünschte Ergebnisse (Beispiel):

story_id |

NUM_COMMENTS
4 |   17 
    6 |    0 
    7 |    4 

Ich konnte dies mit der Abfrage für einen bestimmten story_id tun:

SELECT story_id, Count(story_id) as num_comments FROM story_comment where story_id=20; 

aber ich bin nicht sicher, wie ich dies in der Tabelle für jeden story_id tun kann. Randnotiz Ich mache diese Abfrage mit mysqli in PHP.

Antwort

1

Verwenden GROUP BY

SELECT story_id, Count(story_id) as num_comments FROM story_comment 
GROUP BY story_id 

Die GROUP BY-Anweisung ist verwendet in Verbindung mit dem Aggregat Funktionen zum Gruppieren der Ergebnismenge von einer oder mehreren Spalten.

+0

Vielen Dank! Genau das, was ich brauchte. –

+0

froh, geholfen zu haben – e4c5

0

Um Aggregatfunktionen wie count() auf jeden eindeutigen Wert einer Spalte statt auf die gesamte Tabelle anwenden, fügen Sie eine group by

SELECT story_id, Count(*) as num_comments 
FROM story_comment 
group by story_id 
+0

Vielen Dank für Ihre schnelle Antwort, das war genau das, was ich brauchte! –