Ich habe eine Datenbank mit zwei Tabellen: data
und file
.Zählen der Anzahl der untergeordneten Datensätze in einer Eins-zu-viele-Beziehung mit nur SQL
file_id
ist ein Fremdschlüssel von data
bis file
. So ist die Beziehung von data
zu file
n zu eins.
Gibt es eine Möglichkeit, SQL nur zu verwenden, um herauszufinden, wie viele Datensätze von data
auf jeden Datensatz von file
verweisen?
Zum Beispiel finde ich, wie viele Datensätze von Daten beziehen sich mit ID-Datei 13:
select count(*) from data where file_id = 13;
ich dies für jedes file_id wissen will. Ich habe versucht, den folgenden Befehl ein, dies zu achive, aber es gibt die Zählung für alle file_id Datensätze:
mysql> select distinct file_id, count(*) from data where file_id in (select id from file);
+---------+----------+
| file_id | count(*) |
+---------+----------+
| 9 | 3510 |
+---------+----------+
Wie würden Sie Anzeige ein 'where' Klausel, die mit dem COUNT interagierten (*)':
Um Gruppenzahl (oder eine andere Aggregatfunktion), die Verwendung group by-Klausel zu erhalten? Z.B. Wählen Sie die Anzahl, bei der die Anzahl größer als 5 ist. – DogEatDog
@DogEatDog Fügen Sie die Klausel having nach der Gruppe hinzu durch: 'have count (*)> 5'. –