Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 07:31:04

Страниц: [1]
Печать
Автор Тема: Сложный запрос  (Прочитано 142 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
armageddance    ↓ 
03 Декабрь, 2011, 02:38:16
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

Совсем мозг сломал в процессе реализации сложного запроса к бд. Выручайте.
 
Таблица users (user_id, city) city - идентификатор города
Таблица city - (city_id, city_name) - id города и название
Profiles - (profile_id, user_id) таблица связи профилей и пользователей, один user может иметь несколько profile
Надо выдать "список городов - количество профилей пользователей" где количество профилей пользователей больше одного
 
SELECT city_name, count(profile.profile_id) as profile_count
FROM profiles INNER JOIN users INNER JOIN city WHERE users.user_id=profiles.profile_id
and city.city_id=users.city HAVING profile_count>=1 ORDER BY profile_count DESC
не выдает некоторые города.
Что не так?
Записан
artoodetoo    ↓ 
03 Декабрь, 2011, 03:16:32 , спустя 38 минут 16 секунд
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

что-то я не вижу фразы GROUP BY, как оно без групбая может работать? :D
 
как-то так:
SQL
SELECT cities.city_name, count(*) AS profile_count
FROM
  cities INNER JOIN
  users ON users.city_id=cities.id INNER JOIN
  profiles ON profiles.user_id=users.id
GROUP BY cities.city_name
HAVING profile_count > 1
ORDER BY profile_count DESC
Записан
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd