使用join获取特定fk的记录

nqwrtyyt  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有一个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

希望确保此查询在某种情况下不受影响,您可以考虑:)
谢谢!

mrphzbgm

mrphzbgm1#

对我来说,parentandcontact表是多余的。通常,父母的详细信息在一个表中,联系人ID/孩子的详细信息在另一个表中(具有属性,例如孩子注册的课程,孩子的详细信息)。
假设您想从可用的表(parentsschoolcontact,parentandcontact)中获取与特定父级相关的所有联系人,您可以编写一个简单的查询,从parentsschoolcontact表中检索信息below:-

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

如果我错过了什么,一定要告诉我。

相关问题