2011-12-27 3 views
1

У меня есть этот запрос:Подсчет числа строк с параметром

$queryf = "SELECT * FROM classifieds 
WHERE city IN ('$cities') AND state IN ('$states') 
ORDER BY FIELD (city, '$cities'), datetime DESC"; 

$ города является массивом близлежащих городов в пределах 5 миль. То же самое с состояниями.

В принципе, я хочу найти таблицу с информацией о пользователе, которая имеет введенную пользователем информацию (например, таблицу типов craigslist/classifieds), а COUNT - количество строк PER CITY. Так что можно повторить что-то вроде:

10 results found within 5 miles: 
Dublin, CA (8 records) 
Hayward, CA (2 records) 

Кто-нибудь знает, как я был бы в состоянии отслеживать/возвращать количество строк, где город идентичен?

+0

Строка конкатенации массив не работает так. –

+0

Привет. Ваше отрицательное замечание мне не помогло. Эти высказывания кажутся более продвинутыми, чем то, что знал бы базовый пользователь, с моей промежуточной точки зрения. Либо вы недопонимаете вопрос, либо у вас плохой день. Однако, спасибо. – Norse

+0

Ни то, ни другое! На самом деле я прекрасно вас понимаю, и я отлично поприветствовал день. Извините, если вы не поняли мой комментарий, но я здесь, чтобы сообщить факты, которые вам не помогут. Я хочу сказать, что это определенно _не_ ваш реальный запрос (если '$ cities' _really_" массив ", то вы ищете город под названием« Array », потому что это то, как массивы преобразуются в строки в PHP); и если это не ваш реальный запрос, вы теряете наше время. –

ответ

0

GROUP BY вместе с COUNT() должны дать вам то, что вам нужно:

$queryf = "SELECT *, count(classifieds.id) AS num_cities FROM classifieds 
WHERE city IN ('$cities') AND state IN ('$states') 
GROUP BY city 
ORDER BY FIELD (city, '$cities'), datetime DESC"; 
+0

С небольшим количеством настроек, это сработало. Благодаря! – Norse

1

Да.

У MySQL есть целая куча функций и ключевых слов для такого рода агрегации.

Прочитано the documentation for your SELECT statement, особенно когда речь идет о статье GROUP BY.

0

Попробуйте использовать GROUP BY:

SELECT city, COUNT(1) AS count FROM classifieds 
WHERE city IN ('$cities') AND state IN ('$states') 
GROUP BY city 
Смежные вопросы