![]() |
|
Модераторы: skyboy |
![]()
|
|
| sunnmas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Тема похожа на http://forum.vingrad.ru/topic-265234.html,
но немного отличается также есть 2 таблицы: sites, users. нужно сделать следующее: Выбрать только те записи, про которые в users написано более 7 раз Например, пробую запрос: SELECT sites.index, sites.site, COUNT(*) FROM sites, users WHERE ((sites.index = users.index)) GROUP BY users.index Выбирает: index site COUNT(*) 120 http://www.2piar.net 1 121 http://www.3piar.net 8 122 http://www.4piar.net 5 123 http://www.5piar.net 7 А нужно выбрать: index site COUNT(*) 121 http://www.3piar.net 8 P.S.: SELECT sites.index, sites.site, COUNT(*) FROM sites, users WHERE ((sites.index = users.index) AND COUNT(*)>7) GROUP BY users.index не катит, потому сюда и обращаюсь за помощью, ибо больше ничего в голову не приходит (и не придет видимо |
|||
|
||||
| Gudinya |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 2.2.2008 Репутация: 2 Всего: 8 |
Просто оберни свой запрос
ну или
Это сообщение отредактировал(а) Gudinya - 14.9.2009, 23:58 |
||||
|
|||||
| sunnmas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Спасибо, все получилось. Но появились усложнения.
Есть 2 таблицы, связанные по id: 1 sites: id site 2 users: id username error (тип enum 0 - нет ошибки, 1,2,3,.. - всякие ошибки) ======================================================== Нужно получить такую выборку: id site num_users Условия для отбора: Выбрать все сайты для которых есть в users количество записей не больше заданного (у меня 7), причем юзеры, содержащие ошибки в подсчет не должны попадать. Т.е. учитываются только валидные записи. И еще если записей нет в users для сайта, то должен выводиться сайт и num_users=0, т.е. похоже нужно задействовать LEFT JOIN, как в http://forum.vingrad.ru/topic-265234.html Спасибо заранее Это сообщение отредактировал(а) sunnmas - 17.9.2009, 15:00 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
sunnmas
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| sunnmas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Полный текст моего запроса
SELECT sites.index, sites.site, users.reg_error, COUNT( users.index ) FROM sites LEFT JOIN users ON sites.index = users.index WHERE (users.reg_error<>0) GROUP BY sites.index HAVING COUNT( users.index ) <7 Не выполняется: "И еще если записей нет в users для сайта, то должен выводиться сайт и num_users=0" PS: Я ошибся в прошлом посте в утверждении "причем юзеры, содержащие ошибки в подсчет не должны попадать. учитываются только валидные записи". Правильное: "причем юзеры, содержащие 0 - ошибок нет в подсчет не должны попадать. учитываются только НЕ валидные записи" (Уже сам запутался, сорри, не ругайтесь) Это сообщение отредактировал(а) sunnmas - 17.9.2009, 14:42 |
|||
|
||||
| sunnmas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
аааа допер))
SELECT sites.index, sites.site, users.reg_error, COUNT( users.index ) FROM sites LEFT JOIN users ON ( (sites.index = users.index) AND (users.reg_error <>0) ) GROUP BY sites.index HAVING COUNT( users.index ) <7 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |