Mam następujący tworzenie select-zapytanie:Jak uniknąć cudzysłowie aliasów tabel w jOOQ
final DSLContext create = DSL.using(..., SQLDialect.POSTGRES);
create
.select(DSL.field("identifier"), DSL.field("name"),
create.selectCount()
.from(DSL.table("person"))
.where(DSL.field("identifier").eq(DSL.field("personOuter.identifier")))
.asField("count"))
.from(DSL.table("person").as("personOuter"))
jOOQ generuje następujące zapytanie:
select
identifier,
name,
(select count(*)
from person
where identifier = personOuter.identifier) as "count"
from person as "personOuter"
Zapytanie powinno być:
select
identifier,
name,
(select count(*)
from person
where identifier = personOuter.identifier) as "count"
from person as personOuter
To ostatnie zapytanie działa idealnie w PostgreSQL. Alias tabeli nie powinien być otoczony cudzysłowami.
Czy to błąd?
(Zauważ, że zapytanie jest całkiem głupi jestem zabawy z jOOQ ocenić.).
Poniższy „hack” działa:
create
.select(DSL.field("identifier"), DSL.field("name"),
create.selectCount()
.from(DSL.table("person"))
.where(DSL.field("identifier").eq(DSL.field("personOuter.identifier")))
.asField("count"))
.from("person as personOuter")
Dziękuję. Będę musiał przeanalizować twoją odpowiedź. Przyjmę to w najbliższych dniach. –
Dziękuję, twoja opinia była bardzo przydatna. –
@JefJedrison: Bardzo proszę. Jeśli masz jakieś dalsze problemy, po prostu zadaj nowe pytanie w Stack Overflow. Będę w okolicy :) –