Mysql 使用join获取特定fk的记录
我有一个ParentsChoolContact表,其中parentId具有parentId的外键:Mysql 使用join获取特定fk的记录,mysql,sql,database,Mysql,Sql,Database,我有一个ParentsChoolContact表,其中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
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
希望确保此查询在某种情况下不会出现,您可以考虑:)
谢谢 对我来说,我发现ParentAndContact表是多余的。通常,家长详细信息在一个表中,联系人ID/孩子详细信息在另一个表中(具有属性,例如孩子注册的课程,孩子的详细信息) 假设您希望从可用表(ParentsChoolContact、ParentsContact和Contact)中获取与特定父级相关的所有联系人,您可以编写一个简单的查询,从ParentsChoolContact表中检索信息,如下所示:-
如果我遗漏了什么,一定要告诉我 你想包括没有孩子的父母吗?或者没有父母的孩子?你不需要这部分:'k.parentId=myParentVariable AND'。如果你的
myParentVariable
是你的parentId
,那么你不需要引用ParentAndKid
,只要使用其中k.parentId=myParentVariable
@Shawn否,我只选择孩子,所以我只想要一个特定家庭的孩子parent@MNY您的Kid
表不需要parentID
,或者您不需要ParentAndKid
表。我的选择是保留ParentAndKid
并删除Kid.parentID
。然后从查询中删除和pk.parentID=myParentVariable
。
select contactId, parentId, name, age
from ParentsSchoolContact
where parentId = myParentVariable