使用join来获取特定fk的记录

时间:2018-04-24 23:03:06

标签: mysql sql database

我有一个ParentsSchoolContact表,其中parentId具有parentId的外键:

CREATE TABLE ParentsSchoolContact (
  contactId int NOT NULL AUTO_INCREMENT,
  parentId int NOT NULL,
  name varchar(60) NOT NULL,
  age varchar(60) NOT NULL,
  PRIMARY KEY (contactId),
  FOREIGN KEY (parentId) REFERENCES Parent(parentId)
);

我有一个父和联系人表来保持孩子和父母之间的关系:

CREATE TABLE ParentAndContact (
  parentId int NOT NULL,
  contactId int NOT NULL,
  PRIMARY KEY (contactId, parentId)
);

我希望获得与我拥有其ID的特定父级相关的所有联系人,这是正确的查询吗?

SELECT c.name, c.age
FROM ParentsSchoolContact c 
INNER JOIN ParentAndKid pc ON pc.contactId = c.contactId 
    AND c.parentId = myParentVariable 
    AND pc.parentId = myParentVariable

希望确保此查询剂量在某些情况下可以考虑:)

谢谢!

1 个答案:

答案 0 :(得分:0)

对我来说,我看到ParentAndContact表是多余的。通常,父母详细信息在一个表中,ContactID / Kids详细信息在另一个表中(具有属性,例如,孩子注册的课程,孩子的详细信息)。

假设您希望从可用表(ParentsSchoolContact,ParentAndContact)获取与您具有其ID的特定父级相关的所有联系人您只需编写一个简单的查询即可从ParentsSchoolContact表中检索信息,如下所示< - em>: -

select contactId, parentId, name, age 
from ParentsSchoolContact
where parentId = myParentVariable 

如果我错过了什么,请告诉我。