Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом. / 16 сообщений из 16, страница 1 из 1
27.10.2006, 11:33
    #34086289
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Вот есть в базе записи.

data tip active
700 10 true
700 34 false
710 45 true
... ... ...

мне нужно сделать обьединение строк.
чтобы результат мне выдал такой, в зависимости от active

data active noactive
700 10 34
710 45 0
... ... ...
...
Рейтинг: 0 / 0
27.10.2006, 11:36
    #34086305
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Вторая таблица должна получится такая(чтобы не привязываться к названию active)

data active_num noactive_num
700 10 34
710 45 0
... ... ...
...
Рейтинг: 0 / 0
27.10.2006, 11:42
    #34086347
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Для одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?
...
Рейтинг: 0 / 0
27.10.2006, 11:43
    #34086356
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Да.
...
Рейтинг: 0 / 0
27.10.2006, 11:44
    #34086358
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
pamirДля одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?
для этого случая
Код: plaintext
1.
2.
3.
select t1.data, t1.tip as active, t2.tip as noactive
from table t1
left join table t2 on (t1.data = t2.data and t2.active = true)
where t1.active = false
...
Рейтинг: 0 / 0
27.10.2006, 12:14
    #34086499
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
ERROR: syntax error at or near "table"

Как бы не работает...
...
Рейтинг: 0 / 0
27.10.2006, 12:15
    #34086502
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Если поубирать table
то пишет

ERROR: relation "t2" does not exist
...
Рейтинг: 0 / 0
27.10.2006, 12:18
    #34086510
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Ну откуда мы знаем, как у вас таблица называется...
...
Рейтинг: 0 / 0
27.10.2006, 12:20
    #34086528
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
pamirДля одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?

Это вообще. А может и не быть какой то записи из этих двух. Тогда tip будет 0.
Я показал пример с data = 710. У этой записи active = true. И нету записи с data = 710 и active = false. Но в будущем возможно появится.

Обьяснил конечно путанно.
...
Рейтинг: 0 / 0
27.10.2006, 12:25
    #34086545
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
pamirНу откуда мы знаем, как у вас таблица называется...

Сори, забыл. Таблица tips.
...
Рейтинг: 0 / 0
27.10.2006, 12:28
    #34086554
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Заменил название таблицы. Все заработало. :)
Только 0 не пишет.
...
Рейтинг: 0 / 0
27.10.2006, 12:37
    #34086593
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
weblerЗаменил название таблицы. Все заработало. :)
Только 0 не пишет.Воспользуйтесь COALESCE...
Код: plaintext
select t1.data, coalesce(t1.tip, 0 ) as active, coalesce(t2.tip, 0 ) as noactive ...
...
Рейтинг: 0 / 0
27.10.2006, 12:41
    #34086615
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Нули начало прописывать. coalesce нужная штука.
Но сам запрос странно составлен, пропускает строки.
...
Рейтинг: 0 / 0
27.10.2006, 12:43
    #34086620
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Показывает только те data где изначально active = false
...
Рейтинг: 0 / 0
27.10.2006, 12:53
    #34086670
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
weblerПоказывает только те data где изначально active = falseДело в том, что Вы изначально, подталкиваемые участником Serik Akhmetov, пошли неверным путем.
Вот так напишите свой запрос:
Код: plaintext
1.
2.
3.
4.
select data,
       sum(case when active = true then tip else  0  end) as active_num,
       sum(case when active = false then tip else  0  end) as noactive_num
  from tips
 group by data
и будет Вам счастье...
...
Рейтинг: 0 / 0
27.10.2006, 13:02
    #34086722
webler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом.
Щукина Анна weblerПоказывает только те data где изначально active = falseДело в том, что Вы изначально, подталкиваемые участником Serik Akhmetov, пошли неверным путем.
Вот так напишите свой запрос:
Код: plaintext
1.
2.
3.
4.
select data,
       sum(case when active = true then tip else  0  end) as active_num,
       sum(case when active = false then tip else  0  end) as noactive_num
  from tips
 group by data
и будет Вам счастье...

СУПЕР. Сенк. Так работает именно так как нужно.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом. / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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