比方说,我想找出所有父母和我父母在同一班级的孩子。我可以写这样的查询:SQL:查找父母都是我的所有孩子
SELECT child.* FROM child
JOIN parent ON child.ParentID = parent.ID
WHERE parent.class IN (SELECT parent1.class
FROM parent1 JOIN child1
ON parent1.id = child1.parentID
WHERE child1.ID = MyID)
不知怎的,这感觉就像我做错了,我在写(约)相同的连接两次,但我不能想出一个办法来提高它(我可以找出嵌套子查询的其他方法,但没有一个看起来更整洁)。
有没有一个干净的方式做到这一点,我失踪了?或者我做对了吗?
编辑:正如GolzeTrol在他对这个问题的(完整)回答中所指出的,儿童被限制为只有一个父母是很奇怪的。他是完全正确的,我并不打算在实际的家庭中运行这个查询,而是在其他一些表格上,每个孩子实际上只与一个父母关联。
谢谢,那正是我想要的。只是没有想到自己加入一张桌子。关于结构,你是对的 - 我实际上并没有为儿童和父母这样做,但对于我的数据库中的一些儿童只有一位家长的表 - 我会在问题中留下一个注释。 –