powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
7 сообщений из 7, страница 1 из 1
Помогите написать запрос
    #34900027
magistr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сушествует 2 таблички
1 users
-------------------------------------
| users_id | ip | limitation |
-------------------------------------
| 1 |192.168.1.1 | 100 |
| 2 |192.168.1.2 | 500 |
| 3 |192.168.1.3 | 200 |
-------------------------------------
2 traf_ag
-----------------------
| users_id | quantity |
-----------------------
| 1 | 40 |
| 2 | 25 |
| 1 | 50 |
| 2 | 25 |
| 3 | 60 |
| 2 | 25 |
| 3 | 150 |
| 1 | 25 |
-----------------------

Нужно написать запрос так чтобы выводился тот users.ip у которого users.limitation был больше его суммы в таблице traf_ag
users.users_id=traf_ag.users_id
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34900274
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то всё криво выходит, может виной тому выходные, а может ещё что, хочется красивше. м.б. HAVING or SUB SELECT. однако:
Код: plaintext
1.
2.
3.
4.
SELECT ta.users_id, u.ip, u.limitations, sum(ta.quantity) 
FROM traf_ag ta, users u 
WHERE (u.users_id = ta.users_id and ta.users_id = ta.users_id and ta.quantity > u.limitations ) 
GROUP BY ta.users_id, u.limitations, u.ip;
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34900366
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
magistrНужно написать запрос так чтобы выводился тот users.ip у которого users.limitation был больше его суммы в таблице traf_ag
users.users_id=traf_ag.users_idЕсли я правильно понял вопрос, то на твоих тестовых данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select users.users_id, users.ip, users.limitation,
       sum(traf_ag.quantity) as sum_quantity
  from users
  join traf_ag
    on users.users_id = traf_ag.users_id
 group by users.users_id, users.ip, users.limitation
having users.limitation > sum(traf_ag.quantity)

Query finished, retrieving results...

USERS_ID        IP       LIMITATION   SUM_QUANTITY
--------   -----------   ----------   ------------
        2     192 . 168 . 1 . 2            500               75 

 1  row(s) retrieved
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34900809
magistr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задачку сам решил вот так

select u.ip from traf_ag tr
inner join users u on tr.users_id = u.users_id
group by u.ip, limitation
having u.limitation*1024*1024-sum(tr.quantity)>0;
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34900835
magistr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь есть другая задачка
в табличке users появился столбец enabled который равен либо 0 либо 1
надо теперь написать update так чтобы
если users.limitation < sum(traf_ag.quantity) тогда users.enabled=0
в противном случае равен 1
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34901192
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем сложности? Используй IN/EXISTS-подзапрос для выявления строк, подлежащих апдейту.
...
Рейтинг: 0 / 0
Помогите написать запрос
    #34901909
magistr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем разобрался
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]