SQL使用多个where连接来自四个表的数据

SQL使用多个where连接来自四个表的数据,sql,Sql,您好,我有下面的sql语句,用于链接四个表。这些表格是个人(c,e),关系(d),个人家庭(b),家庭(a)。 我添加了条件,其中d.关系类似于“%Father”,因为我想筛选该特定关系,因此它仅检索(c)的数据,如果该关系是父亲、继父、祖父等。我添加此条件后,它失败了-我还没有找到多个where条件的例子,因为我需要为母亲再添加一个where条件,但我希望它出现在同一行的f.Title、f.Forename、f.姓氏下 我想,如果我能理解如何在sql中执行multiple where,我可能也

您好,我有下面的sql语句,用于链接四个表。这些表格是个人(c,e),关系(d),个人家庭(b),家庭(a)。 我添加了条件,其中d.关系类似于“%Father”,因为我想筛选该特定关系,因此它仅检索(c)的数据,如果该关系是父亲、继父、祖父等。我添加此条件后,它失败了-我还没有找到多个where条件的例子,因为我需要为母亲再添加一个where条件,但我希望它出现在同一行的f.Title、f.Forename、f.姓氏下

我想,如果我能理解如何在sql中执行multiple where,我可能也能检索出母数据

SELECT a.pk_FamilyID, a.Salutation, e.Title, e.Forename, e.Surname, c.Title, c.Forename, c.Surname
FROM Family a
INNER JOIN PersonFamily b ON a.pk_FamilyID = b.fk_FamilyID
INNER JOIN Person c ON b.fk_PersonID = c.pk_PersonID
INNER JOIN Relation d ON c.pk_PersonID = d.fk_RelatedPersonID
WHERE d.Relationship LIKE '%Father'
INNER JOIN Person e ON d.fk_PersonID = e.pk_PersonID
WHERE e.pk_PersonID IN('" & Substitute ( ListOfPersonUUID ; ¶ ; "','" ) & "')
ORDER BY e.SurnameForename ASC

您可以使用
和/或
运算符在where中添加多个条件,以适合您的要求为准。在这种情况下,您可能需要使用
运算符。我假设您希望在关系处于
%Father
%Mother
状态时得到结果,这就是为什么在where部分中添加了
(d.类似于“%Father”的关系或d.类似于“%Mother”的关系)
条件的原因

SELECT a.pk_FamilyID, a.Salutation, e.Title, e.Forename, e.Surname, c.Title, c.Forename, c.Surname
FROM Family a
INNER JOIN PersonFamily b ON a.pk_FamilyID = b.fk_FamilyID
INNER JOIN Person c ON b.fk_PersonID = c.pk_PersonID
INNER JOIN Relation d ON c.pk_PersonID = d.fk_RelatedPersonID
INNER JOIN Person e ON d.fk_PersonID = e.pk_PersonID
WHERE (d.Relationship LIKE '%Father' OR d.Relationship LIKE '%Mother')
AND e.pk_PersonID IN('" & Substitute ( ListOfPersonUUID ; ¶ ; "','" ) & "')
ORDER BY e.SurnameForename ASC

同一数据集上不能有多个
WHERE
子句。条件需要用逻辑运算符分隔,如
,或者需要将
放在数据集中的
位置

您可以选择:

SELECT a.pk_FamilyID, a.Salutation, e.Title, e.Forename, e.Surname, c.Title, c.Forename, c.Surname
FROM Family a
INNER JOIN PersonFamily b ON a.pk_FamilyID = b.fk_FamilyID
INNER JOIN Person c ON b.fk_PersonID = c.pk_PersonID
INNER JOIN (SELECT * FROM Relation d WHERE Relationship LIKE '%Father')ON c.pk_PersonID = d.fk_RelatedPersonID
INNER JOIN (SELECT * FROM Person WHERE pk_PersonID IN('" & Substitute ( ListOfPersonUUID ; ¶ ; "','" ) & "'))e ON d.fk_PersonID = e.pk_PersonID
ORDER BY e.SurnameForename 

您还可以在“加入…开启”中添加多个条件。谢谢,我现在明白为什么我在何处找不到多个条件。您的代码示例仍在生成一个null,但我想我理解了用于放置两个where条件的语法in@Rubik是的,我可以,它不会在
内部连接中做任何更改,但是如果有其他连接会产生影响。这会混淆OP。因为OP对sql来说是新的,我只想让OP明白如何做它起作用了。