Можно ли составить такой запрос.
НУжно вытащить Имя города, Колличество Квартир, Цена за час(минимальная), изображение города,
из таблиц.... . Где Колличество квартир в Городе имеет наибольшее значение,
И всего 8 городов должно получиться. Где У каждого города по 1й квартире и сминимальной ценой за час
Чтото набросал но он с ошибкой не врублюсь как еще решить можно
SELECT c.city_name,COUNT(a.city_id) as count,a.price_hour,c.city_img FROM apartment a
LEFT JOIN city c USING(city_id)
WHERE a.price_hour = (SELECT MIN(price_hour) FROM apartment)
AND COUNT(a.city_id) = (SELECT MAX( COUNT(city_id) FROM apartment) )
GROUP BY news_id
LIMIT 8
ну или хотябы подскажите как сделать такое
остальное я решу
AND COUNT(city_id) = (SELECT MAX( COUNT(city_id) FROM apartment) )
Игорь_Vasinsky
27.05.2016 - 09:54
SELECT MAX( COUNT(city_id) FROM apartment group by city_id limit 1 order by COUNT(city_id) DESC)
не ?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky, Неа и ваш вариант И мой ни в какую.
SELECT news_id,city_id, COUNT(city_id), price_hour FROM apartment
WHERE price_hour = (SELECT MIN( price_hour ) FROM apartment)
GROUP BY news_id
LIMIT 8
Такой вариант вытаскивает 8 квартир, но они все с 1го города. Нужно с каждого города по 1му
Вот блин как вытащить то только 1 город, вытаскиваются все по порядку.
А нужно только из каждого города по 1му полю С самым максимальным количеством городов.
maruo, что-то из описания не очень понятно, какой результат должен быть? По одной квартире с минимальным ценником из восьми городов где квартир больше всего, и количество квартир в этих городах (будет одинаковым для всех по условию)?
kaww
Нет кол -во квартир в городах разные в таблице.
Нужно Взять 8 городов. С максимальным числом квартир в Этом городе.
И минимальным ценником на эту квартиру
select c.*, count(1) as numebr_of_appartament, min(a.price_hour) as min_price
from city as c
inner join apartment as a on c.city_id=a.city_id
group by c.city_id
order by cnt desc
limit 8
kaww, Сейчас сверю, точно ли те значения получаю:)
Вот же уровень) Я 4 часа мучал запрос)
А как это работает? count(1)
T1grOK
27.05.2016 - 12:28
Цитата (kaww @ 27.05.2016 - 08:11) |
select c.*, count(1) as numebr_of_appartament, min(a.price_hour) as min_price from city as c inner join apartment as a on c.city_id=a.city_id group by c.city_id order by cnt desc limit 8 |
LIMIT сработает раньше группировки, так что запрос некорректно отработает.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK, Хм ну я вроде сверил вытащилось то что надо, хотя не буду спорить
Цитата (maruo @ 27.05.2016 - 15:16) |
А как это работает? count(1) |
кстати, стоит заменить на count(*) или с primary key, что будет работать быстрее чем count(1)
Цитата (T1grOK @ 27.05.2016 - 15:28) |
LIMIT сработает раньше группировки |
нет
kaww, А как все же работает count(1) с единицей внутри? Как то по другому?
T1grOK
27.05.2016 - 12:47
Цитата (kaww @ 27.05.2016 - 08:39) |
нет |
Да. LIMIT выполняется в процессе выборки, GROUP BY выполняется на основании полученных записей.
P.S. А, все. Не обратил внимание на сортировку..
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Народ, ну можно еще ответ получить на один вопрос.
Такая Задача , Сайт на поддоменах.
ТОесть каждый город на поддоменах.
А у меня MVC. В роутере менять ?
Просто там еще Надо что бы УРл был на русском языке.
А функции нельзя вызывать же русскими буквами
Цитата (maruo @ 27.05.2016 - 15:40) |
А как все же работает count(1) с единицей внутри? |
то же самое что и count(*), за исключением простых запросов без where для myisam т.к. это значение хранится движком. Но это не случай, обсуждаемый в этой теме. описано тут
http://dev.mysql.com/doc/refman/5.7/en/gro...#function_countЦитата |
This optimization applies only to MyISAM tables only, because an exact row count is stored for this storage engine and can be accessed very quickly. |
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.