mysql - 通过外键选择数据。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)?
解决方案
你的表已经通过它的外键有关系孩子父母
所以
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。
还要让父母双方排成一排。它变得有点复杂,为此您应该提供示例数据
推荐阅读
- java-money - Java 的货币和货币操作 - JSR 354
- kubernetes - Kubernetes pod 对集群或命名空间级别的限制
- amazon-web-services - 在不遵循终止策略的情况下,您能否指定在通过自动扩展组缩减 EC2 实例时要终止的实例?
- sed - 使用 sed 使用环境变量替换复杂行
- ruby-on-rails - 为什么我的 Rails DB 迁移没有创建列?
- javascript - Js/jQuery - 此代码将大小设置为变量,有什么方法可以使其响应?
- javascript - NPM 损坏并报告此错误:npm ERR!404
- salt-stack - 使用 Salt 安全交付 Minion 特定文件的最佳方法是什么?
- wordpress - 两个 WordPress 实例随机生成,状态为 301
- outlook - 关于 PidTagInternetCodePage、PidTagMessageCodepage、PidTagStoreSupportMask 的 MSG 说明