Mysql 水平合并2个表

Mysql 水平合并2个表,mysql,Mysql,我在MySQL数据库中有两个表父表和子表,我想合并这两个表 我想知道如何查询这两个表,以便得到以下结果(查询),这可能吗?如果是这样的话,我该怎么做呢?这应该是可行的(有点): 这将给你一个结果,每个孩子都在自己的线上,尽管多个孩子的父母会重复。这可能是一个稍微好一点的方法。你的方式是可能的,但这是一种痛苦。你可以在这里找到答案,这是一个经常被问到的问题 我还可以建议改变你的结构吗? 我建议为parent创建一个单独的name属性,而不是father和mother,并为每个代表的人提供自己的

我在MySQL数据库中有两个表父表和子表,我想合并这两个表

我想知道如何查询这两个表,以便得到以下结果(查询),这可能吗?如果是这样的话,我该怎么做呢?

这应该是可行的(有点):

这将给你一个结果,每个孩子都在自己的线上,尽管多个孩子的父母会重复。这可能是一个稍微好一点的方法。你的方式是可能的,但这是一种痛苦。你可以在这里找到答案,这是一个经常被问到的问题

我还可以建议改变你的结构吗?
我建议为parent创建一个单独的name属性,而不是father和mother,并为每个代表的人提供自己的DB条目。然后给每个孩子一个“母亲ID”和一个“父亲ID”,而不是组合的“父母”属性。也许还可以试着养成使用“attribueId”属性来澄清人际关系的习惯。这将为您提供更清晰的模式,并且更易于使用。实际上,您有一个耦合的“父”实体,它不必要地链接父和母,或者强制显示空值。如果你有一个“父”实体,你会有更多的自由。它将您的逻辑1对1更改为1对多

这应该会起作用(有点):

这将给你一个结果,每个孩子都在自己的线上,尽管多个孩子的父母会重复。这可能是一个稍微好一点的方法。你的方式是可能的,但这是一种痛苦。你可以在这里找到答案,这是一个经常被问到的问题

我还可以建议改变你的结构吗?
我建议为parent创建一个单独的name属性,而不是father和mother,并为每个代表的人提供自己的DB条目。然后给每个孩子一个“母亲ID”和一个“父亲ID”,而不是组合的“父母”属性。也许还可以试着养成使用“attribueId”属性来澄清人际关系的习惯。这将为您提供更清晰的模式,并且更易于使用。实际上,您有一个耦合的“父”实体,它不必要地链接父和母,或者强制显示空值。如果你有一个“父”实体,你会有更多的自由。它将您的逻辑1对1更改为1对多

简单的左连接完成了这项工作

 SELECT * 
     FROM Parents 
LEFT JOIN kids 
     ON Kids.parents = parent.id

简单的左连接就可以了

 SELECT * 
     FROM Parents 
LEFT JOIN kids 
     ON Kids.parents = parent.id

这看起来不像是一个合理的数据模型。您的数据不一致。在你的表格中,Neil的父母是Glenn(父母=3),但在你的结果中Neil的父母是Mort和Murial(id=4)@anton yea我犯了一个错误,我的错,但我希望我的目的仍然很清楚。“我很快会修好的。”菲菲,紫杉,你要干什么还不清楚。检查答案…我建议为家长而不是父亲和母亲创建一个名称属性。然后给每个孩子一个母亲ID和一个父亲ID。这将为您提供一个更清晰的模式,它一开始看起来不像一个合理的数据模型。您的数据不一致。在你的表格中,Neil的父母是Glenn(父母=3),但在你的结果中Neil的父母是Mort和Murial(id=4)@anton yea我犯了一个错误,我的错,但我希望我的目的仍然很清楚。“我很快会修好的。”菲菲,紫杉,你要干什么还不清楚。检查答案…我建议为家长而不是父亲和母亲创建一个名称属性。然后给每个孩子一个母亲ID和一个父亲ID。这将为您提供更清晰的模式