2015-10-12 1 views
1

J'ai donc le tableau suivant:Comment compter les occurrences d'un ID de table étrangère dans une table donnée dans SQLite?

Table A 
a_id b_id 

Table B 
b_id b_name 

Je veux compter combien de fois la id dans le tableau B est affiché ou utilisé comme valeur dans la colonne b_id dans le tableau A. On peut supposer que le résultat devrait être quelque chose en tant que tel:

ID  count  name 
1  10  aaaa 
2  8   bbbb 
3  11  cccc 

je considérais à l'aide de la requête suivante:

Select b_id from table_b 

pour obtenir tous les ids. Puis itérez sur chacun d'eux et comptez-les comme ceci:

Select count(*) from table_a where b_id = '' 

Mais le processus est juste trop long. Je veux faire un peu plus court dans une requête. Mais je ne sais pas comment parcourir chaque ligne en utilisant le langage SQLite.

(Même une simple pression vers la droite va aider.)

Répondre

1

Cela peut être fait avec un correlated subquery:

SELECT b_id AS ID, 
     (SELECT COUNT(*) 
     FROM TableA 
     WHERE TableA.b_id = TableB.b_id 
     ) AS count, 
     b_name AS name 
FROM TableB; 
+0

Est-ce plus efficace? Je peux ajouter une limite avant le mot-clé FROM droit? –

+0

Comme par exemple, j'ai seulement besoin de 10 résultats –

+0

Il est susceptible d'être plus efficace qu'une jointure. Et comment utiliser LIMIT serait une question différente; utilisez le bouton "Poser une question". –

2

La requête SQL suivante devrait fonctionner:

SELECT  a.a_id, 
       COUNT(b.b_id)  
    FROM  Table_A a 
    JOIN Table_B b on a.b_id=b.b_id 
    GROUP BY a.a_id 

ci-dessus travaille:

enter image description here

Est c'est votre exigence?

+0

Merci, pouvez-vous expliquer comment s'il vous plaît cela fonctionne? –

+0

Cela fonctionnera-t-il correctement sur SQLite? –