我在 mysql 中处理查询,但我是新手。我加入了 5 个表,其中每个表都有一个标识符,一个表是主表。每个相关表可能有多个关联到主表的记录。我正在尝试加入这些表,但我似乎无法摆脱重复的数据。
我希望显示所有相关记录,但我不希望显示主表中的数据以显示相关表中的所有结果。我尝试了很多不同的方法,但没有任何效果。目前我有 4 个查询适用于单独的表,但我没有成功加入它们以使结果显示相关表中的多条记录,但只有主表中的一条记录。
以下是我有效的个人查询:
SELECT
GovernmaxAdditionsExtract.AdditionDescr,
GovernmaxAdditionsExtract.BaseArea,
GovernmaxAdditionsExtract.Value
FROM
GovernmaxExtract
INNER JOIN GovernmaxAdditionsExtract
ON GovernmaxExtract.mpropertyNumber = GovernmaxAdditionsExtract.PropertyNumber
WHERE (((GovernmaxExtract.mpropertyNumber)="xxx-xxx-xx-xxx"));
SELECT
GovernmaxExtract.mpropertyNumber,
GovernmaxDwellingExtract.CardNumber,
GovernmaxDwellingExtract.MainBuildingType,
GovernmaxDwellingExtract.BaseArea
FROM
GovernmaxExtract INNER JOIN
GovernmaxDwellingExtract ON GovernmaxExtract.mpropertyNumber = GovernmaxDwellingExtract.PropertyNumber
WHERE (((GovernmaxExtract.mpropertyNumber)="xxx-xxx-xx-xxx"));
使用这些子查询,我试图将其中的 2 个表放在一起,但现在我正在取回所有记录并且它没有读取我的输入参数:
SELECT GE.mpropertynumber
FROM
GovernmaxExtract AS GE,
(SELECT
GovernmaxAdditionsExtract.AdditionDescr,
GovernmaxAdditionsExtract.BaseArea,
GovernmaxAdditionsExtract.Value
FROM GovernmaxExtract INNER JOIN
GovernmaxAdditionsExtract ON
governmaxextract.mpropertyNumber = GovernmaxAdditionsExtract.PropertyNumber) AS AE
WHERE GE.mpropertynumber = 'xxx-xxx-xx-xxx'
我尝试了嵌套查询、许多不同的连接,但我无法解决这个问题。我很确定我想进行嵌套查询,因为我希望 Governmax
表中的主要数据与主要数据和所有记录以及相关表的所有信息一起显示一次。也许我做错了。
我们的原始代码是:
SELECT
ge.*,
gde.*,
gfe.*,
gae.*,
goie.*
FROM governmaxextract AS ge
LEFT JOIN governmaxdwellingextract AS gde
ON ge.mpropertyNumber = gde.PropertyNumber
LEFT JOIN governmaxfeaturesextract AS gfe
ON gde.PropertyNumber = gfe.PropertyNumber
LEFT JOIN governmaxadditionsextract AS gae
ON gde.PropertyNumber = gae.PropertyNumber
RIGHT JOIN governmaxotherimprovementsextract AS goie
ON gde.PropertyNumber = goie.PropertyNumber
WHERE ge.mpropertyNumber = '$codeword'
ORDER BY goie.CardNumber
但这会为关联表中的每条记录提供主表中的多行。我考虑过连接,但我需要单独显示关联表中的数据。不确定接下来要尝试什么。非常感谢任何帮助。
最佳答案
抱歉,无法按照您的意愿进行操作。 JOIN 无法做到这一点。
我建议保留带有单独查询的解决方案。
顺便说一句 - 你可以使用 UNION 运算符, http://en.wikipedia.org/wiki/Union_(SQL)#UNION_operator
附言
您可以单独提取主要数据,然后使用 UNION 一次从相关表中提取数据。使用 UNIOM,它将在相关表中的每一行给出一个结果行。
关于mysql - 连接 5 个表 - 1 个主表加上 4 个多行到主表但主数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621883/