Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
UFO_FOV
Member

Откуда:
Сообщений: 4
Здравствуйте.
Я столкнулся с сложной(для моего околонулевого уровня знания sql) проблемой.

Мне нужно через sql собрать таблицу, чтобы она отображала cars.gov_num и name_brand, но при этом есть сложность в том, что в таблице mileages есть есть записи, их нужно рассортировать по idcar и взять два последних значения из поля mileages.value, посчитать их кратность(деление value на docs_to.interval_prvdn с учётом совпадения idbrand и типа ТО(docs_to.doc_to)) и если кратность отличается уже их выбрать и дальше там куда-нибудь в список занести и т.д.

Алгоритмом в приложении я это реализовал, но из-за плохого знания sql я такое сделать в mysql не могу.

К сообщению приложен файл. Размер - 66Kb
26 янв 20, 06:50    [22066627]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20016
FAQ: Нумерация строк и другие вопросы про использование переменных: Выборка нескольких последних записей в неких группах
26 янв 20, 21:19    [22066821]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
UFO_FOV
Member

Откуда:
Сообщений: 4
Akina,

Ну я попробовал что-то своять.
Тут проблема есть, вместо ожидаемых 6 записей, у меня выводиться 14*9=126 записей. Что примечательно каждый id_mileage повторяется 9 раз, а brand_name вообще не группируется.

select * from (
SELECT mileages.id_mileage,car_brands.brand_name, cars.goverment_num, mileages.value,
if (
@p1=cars.id_car,
@rownum:=@rownum+1,
@rownum:=1+Least(0,@p1:=cars.id_car)) as rown
FROM car_brands, cars, docs_to, mileages, (select @rownum:=1, @p1:='_') zz
WHERE ((car_brands.id_brand=cars.idbrand) And ((mileages.idcar=cars.id_car))) order by mileages.id_mileage desc
) yy
where rown <3;
27 янв 20, 11:46    [22067044]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 16783
https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
27 янв 20, 14:00    [22067163]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
UFO_FOV
Member

Откуда:
Сообщений: 4
Вот такой скрип выдаёт первые две записи по ид. Если же вставить на (((1))) order by id_mileage desc, выведется 14 записей вместо 6. Надо куда-то вкорячить сортировку наоборот..

select * from (
SELECT id_mileage, idcar, brand_name, cars.goverment_num, mileages.value,
if (
@p1=idcar,
@rownum:=@rownum+1,
@rownum:=1+Least(0,@p1:=idcar)) as rown
FROM mileages, cars, car_brands, (select @rownum:=1, @p1:='_') zz
where mileages.enable!=0 and car_brands.id_brand=cars.idbrand And mileages.idcar=cars.id_car (((1)))
) yy
where rown <3;
30 янв 20, 09:29    [22069231]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20016
UFO_FOV, а версия-то MySQL у тебя какая?
30 янв 20, 10:45    [22069315]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
UFO_FOV
Member

Откуда:
Сообщений: 4
Akina,

Ну последняя 8.0-я.
30 янв 20, 17:11    [22069722]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из других таблиц, с учётом последнего и предполследнего значения поля.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20016
Ну а чего тады бабушку лохматишь? всё давно сказано - 22067163
30 янв 20, 21:40    [22069938]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить