Postgresql - выбрать объект с отдельным столбцом @ManyToOne - PullRequest
0 голосов
/ 10 марта 2020

У меня есть 2 объекта - Query и QueryExecution.

@Entity
@Table(schema = "db_test")
data class Query(
        @NotNull
        var text: String,
        var name: String?,
) : AbstractEntity()


@Entity
@Table(schema = "db_test")
data class QueryExecution(
        @ManyToOne
        @NotNull
        @JoinColumn(name = "query")
        var query: ManualQuery,

        var status: QueryStatus
) : AbstractEntity()

Запрос:

|    id      | text                   | name     |
|:-----------|-----------------------:|:--------:|
| 100        | select * from b        | b        |
| 200        | select * from c        | c        |
| 300        | select * from d        | d        |

Выполнение запроса:

|    id      | query      | status     |
|:-----------|------------|------------|
| 100        | 100        | NEW        |  
| 200        | 200        | EXECUTED   |
| 300        | 200        | EXECUTED   | 
| 400        | 200        | EXECUTED   |
| 500        | 300        | EXECUTED   |
| 600        | 200        | REFECTED   |
| 700        | 100        | EXECUTED   |
| 800        | 300        | EXECUTED   |
| 800        | 200        | EXECUTED   |

Как получить query_execution так, чтобы он содержал только одну запись каждого запроса?

результат (упорядочить по идентификатору)

|    id      | query      | status   |
|:-----------|------------|----------|
| 100        | 100        | NEW      |
| 200        | 200        | EXECUTED |
| 500        | 300        | EXECUTED |

1 Ответ

0 голосов
/ 11 марта 2020

Существует как минимум два способа выбора сущностей с отдельным столбцом @ManyToOne.

1.

with a as (
    select max(id) as id, query from query_execution group by query
) select me.* from query_execution qe join a on a.id = qe.id;

2

select distinct on (query) * from query_execution  order by query, id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...