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 <[email protected]>
wrote:
> On 08/13/2015 05:59 PM, Guyren Howe wrote:
>
> Ccing list
>
> On Aug 13, 2015, at 17:49 , Adrian Klaver <[email protected]>
>> 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
> [email protected]
>
>
> --
> Sent via pgsql-general mailing list ([email protected])
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>