сжать логику до одного запроса Sql - PullRequest
0 голосов
/ 09 марта 2010

сначала отказ от ответственности, я не спроектировал базу данных, которую я сейчас поддерживаю, и не спроектировал бы ее таким образом, но я здесь.

Проблема: у моего клиента есть таблица в его базе данных, которая содержит списки для аренды. В этой таблице текстовое поле для хранения города листинга. Мой клиент надеется увидеть выпадающий список всех уникальных городов с номером рядом с каждым, представляющим, сколько списков в этом городе.

Игнорируя в настоящее время проблемы орфографии и заглавных букв, какой Sql я должен использовать, чтобы получить уникальный список вместе с каждым счетчиком предметов? Для подтверждения концепции я запросил отдельный список городов (достаточно просто), а затем перебрал каждый из них, запрашивая количество раз, которое оно есть в таблице. Это явно ужасно неэффективно.

Может ли кто-нибудь помочь мне с Sql сделать все это в одном утверждении?

Ответы [ 7 ]

3 голосов
/ 09 марта 2010
SELECT
 CityName,
 COUNT(*) AS CityListings
FROM
 YourTable
GROUP BY
 CityName
ORDER BY
 CityName
2 голосов
/ 09 марта 2010

выберите CityName, COUNT (*) из CitiesTable

группа по CityName

2 голосов
/ 09 марта 2010

ВЫБЕРИТЕ ГОРОД, СЧЕТ (*) ИЗ СТОЛОВОЙ ГРУППЫ ПО ГОРОДУ

;) Получите хорошую книгу SQL, это уровень "SQL за 21 час";)

1 голос
/ 09 марта 2010
SELECT DISTINCT city_name, count(*)
FROM rentals
GROUP BY city_name
1 голос
/ 09 марта 2010

Вы имеете в виду что-то вроде следующего?

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

Это должно превратиться:

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

в

Shepparton 2
Mildura    1

это то, что вам кажется.

1 голос
/ 09 марта 2010

Для начала попробуйте это

SELECT City, Count(*)
FROM myTable
GROUP BY City
1 голос
/ 09 марта 2010

Вы ищете предложение Group By :

SELECT city, COUNT(city)
FROM rentals
GROUP BY city
ORDER BY city
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...