-1

我有两个表:有没有合并这两个表的方法?

question_likes: 

question_id references question(id) 
user_id references users(id) 
primary key (user_id, question_id) 


answer_likes: 

answer_id references answers(id) 
user_id references users(id) 
primary key (user_id, answer_id) 

一位同事建议我可以使用继承Postgres里将这些合并到一个表。

有没有设计此要求的方法?

+0

如果表中有几个公共列,则继承是有意义的。仅对一列使用继承是IMO多余的。还请阅读[继承警告](http://www.postgresql.org/docs/current/static/ddl-inherit.html#DDL-INHERIT-CAVEATS) – Abelisto

+0

你想解决什么问题?你目前的设计究竟是什么?什么是什么的子类型? (问题和答案作为帖子?)“合并”是什么意思?请转到文档并向我们展示您可以设计的内容以及您卡在哪里。请解释一下自己。 – philipxy

回答

1

那么,你不需要我肯定相信。您可以在表格之间执行JOIN并显示如下所示的必填字段。或者,用下面的SQL语句创建一个视图。

select q.question_id, 
q.user_id, 
a.answer_id 
from question_likes q 
join answer_likes a on a.user_id = q.user_id; 

(或)一full outer join如评论所说的克林

from question_likes 
full join answer_likes using(user_id); 
+0

我不确定我是否理解,这两个表不通过外键相关,所以如何在这里加入? –

+0

@ AhmadAl-kheat,你没有提供你所有的表结构,但是从后期可以看出,两个表都有引用用户(id)的'user_id'公共列。所以你可以加入他们。 '加入'也可以在表 – Rahul

+0

@Rahul之间的公共列上完成 - 而不是'完全加入answer_likes使用(user_id);' – klin

0

像这样的东西应该做的:

CREATE TABLE likes (
    like_id   serial PRIMARY KEY, 
    user_id int 
); 

CREATE TABLE question_likes (
    question_id int, 
    primary key (user_id, question_id) 
) INHERITS (likes); 

CREATE TABLE answer_likes (
    answer_id int, 
    primary key (user_id, answer_id) 
) INHERITS (likes); 

merging可以做到使用UNION

SELECT like_id, user_id, question_id, null as answer_id FROM question_likes q 
UNION 
SELECT like_id, user_id, null as question_id, answer_id FROM answer_likes a; 

你想要达到什么目的?

相关问题