powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Один ко многим в один к одному через максимум из многих
4 сообщений из 4, страница 1 из 1
Один ко многим в один к одному через максимум из многих
    #39474963
gammaray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица А
id data1 "1"2 "2"
Есть таблица B
id a_id data1 1 "123"2 1 "234"3 1 "345"4 1 "567"5 2 "678"6 2 "789"
Связь А к B один ко многим по внешнему ключу A.id = B.a_id. Для начала хочется вывести запрос (просто написать соответствующий запрос вида: Select ... Max(B.id) ... INNER JOIN ... ON B.a_id = A.id), который выведет данные из двух таблиц по максимальному B.id для всех связей A.id = B.a_id. То есть вот такое:
A.id B.id A.data B.data4 1 "567" "2"6 2 "789" "3"
Далее необходимо перезаписать B.data содержимым из A.data для описанных условий, то есть в итоге так:
A.id B.id A.data B.data4 1 "567" "567"6 2 "789" "789"
Тут желательно в качестве подзапроса использовать Select из первой части. Заранее спасибо!
...
Рейтинг: 0 / 0
Один ко многим в один к одному через максимум из многих
    #39475023
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gammaray,

Разберись с приведенными примерами данных. Либо таблица A не нужна.
distinct on
...
Рейтинг: 0 / 0
Один ко многим в один к одному через максимум из многих
    #39475181
gammaray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.,
А что не так с данными? Да и данные я абстрактно написал в упрощенным виде.
...
Рейтинг: 0 / 0
Один ко многим в один к одному через максимум из многих
    #39475261
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with a(id, data) as (
    values
    (1, '1'),
    (2, '2')
), b(id, a_id, data) as (
    values
    (1, 1, '123'),
    (2, 1, '234'),
    (3, 1, '345'),
    (4, 1, '567'),
    (5, 2, '678'),
    (6, 2, '789')
)
select distinct on (a.id) * from a join b on a.id=b.a_id order by a.id asc, b.id desc;

https://www.postgresql.org/docs/9.6/static/sql-select.html#SQL-DISTINCT

gammarayДалее необходимо перезаписать B.data содержимым из A.data для описанных условийВам надо UPDATE изменить данные в таблице B? Иначе просто укажите нужный список полей в SELECT.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Один ко многим в один к одному через максимум из многих
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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