Re: Idea: Avoid JOINs by using path expressions to follow FKs
От | Joel Jacobson |
---|---|
Тема | Re: Idea: Avoid JOINs by using path expressions to follow FKs |
Дата | |
Msg-id | 1ade97b3-2e0c-4146-b6ab-140304ed6313@www.fastmail.com обсуждение исходный текст |
Ответ на | Re: Idea: Avoid JOINs by using path expressions to follow FKs (Rod Taylor <rbt@rbt.ca>) |
Список | pgsql-hackers |
On Tue, Mar 30, 2021, at 16:25, Rod Taylor wrote:
On Sat, 27 Mar 2021 at 16:28, Joel Jacobson <joel@compiler.org> wrote:Imagine if we could simply write the SQL query like this:SELECT DISTINCT od.order_id.customer_id.company_nameFROM order_details AS odWHERE od.product_id.product_name = 'Chocolade';I regularly do this type of thing via views. It's a bit confusing as writes go to one set of tables while selects often go through the view with all the details readily available.I think I'd want these shortcuts to be well defined and obvious to someone exploring via psql. I can also see uses where a foreign key might not be available (left join rather than join).I wonder if GENERATED ... VIRTUAL might be a way of defining this type of added record.ALTER TABLE order ADD customer record GENERATED JOIN customer USING (customer_id) VIRTUAL;ALTER TABLE order_detail ADD order record GENERATED JOIN order USING (order_id) VIRTUAL;SELECT order.customer.company_name FROM order_detail;Of course, if they don't reference the GENERATED column then the join isn't added to the query.
Interesting idea, but not sure I like it, since you would need twice as many columns,
and you would still need the foreign keys, right?
/Joel
В списке pgsql-hackers по дате отправления: