Search Postgresql Archives

Re: First-class Polymorphic joins?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, 
You can do this today using inheritance.
define a table "tagable" with person & blog as child tables.

than you could run queries like:
select * from tags JOIN tagable on (tag_id = tag_fk);
 tag_id |   tag_desc   | id | tag_fk |          data
--------+--------------+----+--------+------------------------
      3 | blog tag 1   |  1 |      3 | blog tagged by tag 1
      2 | person tag 2 |  2 |      2 | person tagged by tag 2

simple :)

Regards,
 - Jony


On Fri, Aug 14, 2015 at 4:04 AM, Adrian Klaver <adrian.klaver@xxxxxxxxxxx> wrote:
On 08/13/2015 05:59 PM, Guyren Howe wrote:

Ccing list

On Aug 13, 2015, at 17:49 , Adrian Klaver <adrian.klaver@xxxxxxxxxxx> wrote:

A polymorphic join is where a fk contains not just an id but an indicator of which table it refers to.

I am pretty sure it already does that:

http://www.postgresql.org/docs/9.4/interactive/sql-createtable.html

REFERENCES reftable [ ( refcolumn ) ]

I apologize for not being clearer.

The point is that the fk in different rows can reference different tables. I might want to be able to attach a tag to a person or a blog post, say. And then I want to find all the persons and blog posts with a particular tag, in a single query.

Could you just not turn that around?:

tag
  tag_id
  tag_desc

person
  person_id
  tag_fk references tag
       
blog
  blog_id
  tag_fk references tag


The simplest implementation is to have a table reference as a first-class value I can store in a field.



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux