2017-07-26 4 views
0

Ich habe 2 Tabellen, 1 ist Persons und 1 ist Relationships.SQL-Zählung auf einer verbundenen Tabelle

Ich möchte die Person mit den meisten Kindern abrufen.

Derzeit bin bei ich die Tabellen wie folgt aus:

SELECT 
    PERSONS.ID, 
    PERSONS.NATIVE_COUNTRY, 
    RELATIONSHIPS.PERSON_ID, 
    RELATIONSHIPS.RELATION 
FROM PERSONS 
INNER JOIN RELATIONSHIPS ON RELATIONSHIPS.PERSON_ID = ID 
          AND RELATIONSHIPS.RELATION = 'child'; 

Jetzt versuche ich PERSONS.ID zu zählen und die max, aber nicht sicher zu bekommen, wie das zu tun.

+0

Können Sie mehr Informationen über Ihre Tabelle und das erwartete Ergebnis geben? –

Antwort

0

können Sie versuchen, mit der Gruppe von:

SELECT PERSONS.ID, COUNT(*) "No of Children" FROM PERSONS INNER JOIN RELATIONSHIPS ON RELATIONSHIPS.PERSON_ID = ID AND RELATIONSHIPS.RELATION = 'child' GROUP BY persons.id;

+0

Danke, einfach und funktioniert –

+0

Vielen Dank für die Annahme meiner Antwort :) – ihm017

3

Sie Partition ... von

SELECT PERSONS.ID, PERSONS.NATIVE_COUNTRY, RELATIONSHIPS.PERSON_ID, 
     RELATIONSHIPS.RELATION, 
     count(*) over (partition by Persons.ID order by Persons.ID) 
FROM PERSONS 
INNER JOIN RELATIONSHIPS ON RELATIONSHIPS.PERSON_ID = ID AND 
          RELATIONSHIPS.RELATION = 'child'; 

auch nutzen könnten, können Sie einfach GROUP BY tun könnte, wenn Sie Partition nicht wie von

SELECT PERSONS.ID, PERSONS.NATIVE_COUNTRY, RELATIONSHIPS.PERSON_ID, 
     RELATIONSHIPS.RELATION, 
     COUNT(*) 
FROM PERSONS 
INNER JOIN RELATIONSHIPS ON RELATIONSHIPS.PERSON_ID = ID AND 
          RELATIONSHIPS.RELATION = 'child'; 
GROUP BY PERSONS.ID, PERSONS.NATIVE_COUNTRY, RELATIONSHIPS.PERSON_ID, 
      RELATIONSHIPS.RELATION 

Auch bei der Verwendung von Verknüpfungen zu verwenden versuchen, Alias, es ist besser für die Lesbarkeit und keinen Grund für alle Großbuchstaben

+0

Ich möchte nicht einen neuen Thread mit ähnlicher Frage öffnen: Ich versuche, die durchschnittliche Anzahl von Kindern für eine Person in einem Land für jedes Land in der Datenbank abzurufen (Es gibt ein Feld Personen.Land) –

+0

Hinzufügen ' Country 'Tabelle in diesem Join, und anstelle der Anzahl verwenden Sie einfach AVG-Funktion – Veljko89

Verwandte Themen