powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / не могу составить запрос
10 сообщений из 10, страница 1 из 1
не могу составить запрос
    #33032727
Фотография Кабан Савраскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогите плиз.
есть 3 таблицы
t1 (t1_id int, t1_val varchar(20))
t2 (t2_id int, t2_val varchar(20))
и третья объединяет 2 первых так:
trans(t1_id int, t2_id int, dt int)
в ней может быть несколько пар сочетаний t1_id и t2_id

нужно сделать выборку, чтобы для каждой пары t1,t2 из таблицы trans выбиралось по 1 записи, такой чтобы dt была максимальной.

не представляю как это сделать без вложенных запросов

например:
t1 (1, 'Вася')
t1(2, 'Петя')

t2 (1, 'Компот')
t2 (2, 'Суп')

trans (1,1,100)
trans (1,1,200)
trans (2,1,100)
trans (2,1,150)

нужно чтобы получилась выборка
trans (1,1,200)
trans (2,1,150)
...
Рейтинг: 0 / 0
не могу составить запрос
    #33032851
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SELECT T3.t1_id, T3.t2_id, MAX(T3.dt)  FROM trans T3
GROUP BY T3.t1_id, T3.t2_id
...
Рейтинг: 0 / 0
не могу составить запрос
    #33032878
Фотография Кабан Савраскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения. кажется я вопрос задал некорректно.
в общем нужно следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
drop table if exists temp3;
create temporary table temp3 (dt int, t2_id int);

insert into temp3 SELECT max( t.dt ), t.t2_id FROM t2 
        right JOIN trans t ON t2.t2_id=t.t2_id
        group by t.t2_id
ORDER BY t.dt desc;

select t1.*, t.* from temp3 left join trans t on (temp3.t2_id = t.t2_id and temp3.dt = t.dt)
left join t1 on (t1.t1_id = t.t1_id);

но без использования временных таблиц
...
Рейтинг: 0 / 0
не могу составить запрос
    #33032923
Фотография Кабан Савраскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например

Дано
cl id val
10 1 100
20 1 200
15 1 150
72 2 100
77 2 110
88 2 90
90 3 500


Должно получиться
cl id val
20 1 200
77 2 110
90 3 500

то есть для id выбирается 1 запись в которой val максимально
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033113
Фотография Mihail R.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
SELECT     t3.id, MAX(t3.v) AS Expr1, t3_1.cl, t3_1.v
FROM         t3 INNER JOIN
                      t3 t3_1 ON t3.id = t3_1.id
GROUP BY t3.id, t3_1.cl, t3_1.v
HAVING      (t3_1.v = MAX(t3.v))
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033118
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кабан Савраскиннапример

Дано
cl id val
10 1 100
20 1 200
15 1 150
72 2 100
77 2 110
88 2 90
90 3 500


Должно получиться
cl id val
20 1 200
77 2 110
90 3 500

то есть для id выбирается 1 запись в которой val максимально

Здесь без вложенного запроса не обойтись.
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033131
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mihail R.
Код: plaintext
1.
2.
3.
4.
SELECT     t3.id, MAX(t3.v) AS Expr1, t3_1.cl, t3_1.v
FROM         t3 INNER JOIN
                      t3 t3_1 ON t3.id = t3_1.id
GROUP BY t3.id, t3_1.cl, t3_1.v
HAVING      (t3_1.v = MAX(t3.v))


Запрос нерабочий, ибо ошибка в применении агрегирования в ограничении на группу.
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033133
Фотография Mihail R.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Johnmen

как нет
:))
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033170
Фотография Кабан Савраскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так вроде работает как надо.
спасибо!

Код: plaintext
1.
2.
3.
4.
SELECT     t1.eq_id, t2.cl_id, t2.dt
FROM        nt t1 INNER JOIN
                      nt t2 ON t1.eq_id = t2.eq_id
GROUP BY t1.eq_id, t2.dt
HAVING      (t2.dt = MAX(t1.dt))
...
Рейтинг: 0 / 0
не могу составить запрос
    #33033346
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mihail R.2Johnmen

как нет
:))


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


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