2013-08-19 4 views
2

Je souhaite sélectionner la colonne de titre de [listings] et le nombre d'occurrences répertoriées dans la table [ads], en fonction de la même valeur d'ID utilisateur.Nombre d'occurrences dans le tableau

Résultat devrait ressembler à:

[title] [cnt] 
Acme 5 
MSFT 10 
GOOG 7 

etc

Cela ne fonctionne pas:

select 
    l.title, 
    (COUNT (id) FROM ads WHERE ads.userid = l.userid) as cnt 
from 
    listings l 
INNER JOIN 
    ads a on a.userid = l.userid 
WHERE 
    l.listingtype = 2 

Répondre

7

Je pense que la requête et d'autres réponses sont plus complexes

select 
    l.title, 
    COUNT (a.id) as cnt 
from 
    listings l 
INNER JOIN 
    ads a on a.userid = l.userid 
WHERE 
    l.listingtype = 2 
GROUP BY l.title 
2

Vous avez besoin d'une clause group by pour achive il.

Quelque chose comme ceci: -

select l.title,COUNT (id) 
(SELECT COUNT (id) FROM ads WHERE ads.userid=l.userid) as cnt 
from listings l 
INNER JOIN ads a on a.userid=l.userid 
WHERE l.listingtype=2 
group by l.title 
2

Vous avez besoin d'un SELECT dans votre sous-requête:

SELECT 
    l.title, 
    (SELECT COUNT (id) FROM ads WHERE ads.userid = l.userid) AS cnt 
FROM 
    listings l 
INNER JOIN 
    ads a on a.userid = l.userid 
WHERE 
    l.listingtype = 2 
Questions connexes