select удалить повторяющиеся строки и выбрать max

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
yaten
проходил мимо
Сообщения: 1
Зарегистрирован: 2015-04-08 12:03:49

select удалить повторяющиеся строки и выбрать max

Непрочитанное сообщение yaten » 2015-04-08 12:14:13

Добрый день!

Имеется таблица

Код: Выделить всё

CREATE TABLE billservice_accounttarif (
    id integer NOT NULL,
    account_id integer NOT NULL,
    tarif_id integer NOT NULL,
    datetime timestamp without time zone,
    periodical_billed boolean DEFAULT false,
    prev_tarif_id integer
);


В ней лежит соответствие id юзера - account_id и id тарифа - tarif_id.
При изменении тарифа у юзера, сюда просто добавляется новая запись с новыми account_id и tarif_id.
Мне надо получить массив в котором будут все присутствующие в таблице юзеры с их последним тарифом (актуальным).
Актуальность можно смотреть по id, он автоинрементный.

Это условие я тестю в select, когда результат будет путевый, он переедет на update, т.е. order by в update не работает.
Весь мозг сломал уже...

Аватара пользователя
Electronik
капитан
Сообщения: 1580
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

select удалить повторяющиеся строки и выбрать max

Непрочитанное сообщение Electronik » 2015-04-09 13:23:50

order by в update

и как по вашему он в update должен работать? О_О

Мне надо получить массив в котором будут все присутствующие в таблице юзеры с их последним тарифом (актуальным).

никак, у вас на одного юзера много account_id, поэтому account_id уникален, а вот юзеры нет.

попробуте так

Код: Выделить всё

SELECT account_id, tarif_id
FROM billservice_accounttarif
WHERE
datetime BETWEEN 'ДАТА С' AND 'ДАТА ПО'
AND
tarif_id=prev_tarif_id
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

snorlov
подполковник
Сообщения: 3579
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

select удалить повторяющиеся строки и выбрать max

Непрочитанное сообщение snorlov » 2015-04-09 16:59:18

Фигня какая то у вас, при изменении тарифа у вас должна добавляться запись со старым account_id и новыми id и tarif_id, при этом до внесения этой записи вы должны определить предыдущий tarif_id, чтобы его загнать в prev_tarif_id

Аватара пользователя
Electronik
капитан
Сообщения: 1580
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

select удалить повторяющиеся строки и выбрать max

Непрочитанное сообщение Electronik » 2015-04-09 18:12:19

и дату смены тарифа
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог


Вернуться в «Базы данных»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость