mysql - 连接 5 个表 - 1 个主表加上 4 个多行到主表但主数据重复

标签 mysql join concatenation

我在 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/

相关文章:

php - Doctrine 2 创建多个记录

mysql - 优化MySql语句

PHP MySQL WHERE 子句列名错误

php - MySQL 离开有条件的连接查询 - 超时

sql-server - SQL Server查询以查找 child 的 parent 姓名

c++ - 如何在 C++ 中连接两个 LPCWSTR

spring data jpa规范join fetch不起作用

Mysql连接和求和

javascript - Gulp.js 事件流合并顺序

file - 使用 ffmpeg 连接文件并没有像我预期的那样工作。为什么?