2010-03-09 5 views
0

est d'abord l'avertissement, je n'ai pas conçu la base de données que je suis maintenant en charge et je ne l'aurais pas conçu de cette façon, mais je suis ici.condenser la logique jusqu'à une requête Sql

Problème: Mon client a une table dans sa base de données qui contient des listes pour les locations. Dans cette table est un champ de texte pour stocker la ville de la liste. Ce que mon client espère voir est une liste déroulante de toutes les villes uniques avec un nombre à côté de chacun représentant combien de listes sont dans cette ville. En ignorant pour l'instant les problèmes d'orthographe et de capitalisation, quel Sql devrais-je utiliser pour obtenir la liste unique avec chaque nombre d'éléments? Pour une preuve de concept, j'ai demandé la liste distincte des villes (assez facile), puis j'ai parcouru chacune d'elles en interrogeant le nombre de fois où elle se trouve dans la table. C'est évidemment horriblement inefficace.

Quelqu'un peut-il m'aider avec le Sql pour faire tout cela en une seule déclaration?

+0

Il serait plus facile si vous aviez des noms de tables et de colonnes, de cette façon nous serons tous parler le même langage dans nos réponses. – Benjol

+0

Merci beaucoup à tous. Je me rends compte que toute personne ayant des compétences de base en SQL pourrait rapidement développer cela, d'où la raison pour laquelle j'ai posté ici. Si je pouvais marquer plus d'une réponse comme acceptée, je le ferais. –

Répondre

3
SELECT 
CityName, 
COUNT(*) AS CityListings 
FROM 
YourTable 
GROUP BY 
CityName 
ORDER BY 
CityName 
+0

+1 pour aliaser la colonne 'Count' et le tri par ville. – RedFilter

2

SELECT CITY, COUNT (*) DU GROUPE TABLE DE VILLE

;) Obtenir un bon SQL Book, c'est "SQL dans 21 heures" niveau;)

1

Vous recherchez la clause Group By :

SELECT city, COUNT(city) 
FROM rentals 
GROUP BY city 
ORDER BY city 
1

Pour commencer, essayez ce

SELECT City, Count(*) 
FROM myTable 
GROUP BY City 
1

Voulez-vous dire quelque chose comme Suivant?

select city, count(city) from listings 
group by city 

Cela devrait tourner:

Shepparton blah blah blah 
Mildura yada yada yada 
Shepparton dum de dum 

dans:

Shepparton 2 
Mildura 1 

qui est ce qu'il semble que vous êtes après.

2

select CityName, COUNT (*) de CitiesTable

groupe

par CityName

1
SELECT DISTINCT city_name, count(*) 
FROM rentals 
GROUP BY city_name 
+2

Vous ne devriez pas utiliser distinct ici, le groupe en prend soin. – HLGEM