首页 > 解决方案 > 通过外键选择数据。MySQL

问题描述

请告诉我如何在下面正确查询。我有两张桌子:父母和孩子。

children (child_id, parent_id_fk, name, surname, ...)
parents  (parent_id, name, surname, phone number, ...)

我很难获得正确的 SELECT,这将为我提供分配给孩子的孩子数据 + 父母数据。例如,应该按上述方式完成分配,还是应该创建另一个表,它将父级与子级关联起来

child_has_parent(key_id, child_id_fk, parent_id_fk)?

标签: mysql

解决方案


你的表已经通过它的外键有关系孩子父母

所以

SELECT 
  c.name, c.surname,
 p.name, p.surname, p.phone number
FROM 
  children c INNER JOIN parents p ON c.parent_id_fk = p.parent_id

但当然你也可以使用你的关系表

SELECT
  c.name, c.surname,
  p.name, p.surname, p.phone number
FROM child_has_parent chp
INNER JOIN  children c  ON chp.child_id_fk = c.child_id
INNER JOIN  parents p ON chp.parent_id_fk = p.parent_id

这应该给你相同的结果

当然,当您有没有父母的孩子时,您必须 LEFT JOIN parents p。

还要让父母双方排成一排。它变得有点复杂,为此您应该提供示例数据


推荐阅读