协助4表加入操作

时间:2013-07-11 19:52:37

标签: sql-server visual-studio-2010 join left-join

为了尽可能清楚,我的数据库中有4个表,如下所示

  1. Join_Contrato_Medidor

    • ID_Union(身份)
    • ID_Contrato
    • ID_Medidor
    • Omitido(filger?)
  2. Promedios

    • ID_Contrato
    • ID_Medidor
    • ID_Marchamo
    • {Info I want}
  3. Medidores

    • ID_Medidor
    • ID_Dispensario(过滤?)
  4. Marchamo

    • ID_Marchamo
  5. 我当前的SQL声明......

    选择{Promedios.LI_1,Promedios.LF_1,Promedios.Total_1,Promedios.Qva_1,...}

    FROM((

    Join_Contrato_Medidor LEFT OUTER JOIN                          Promedios ON Join_Contrato_Medidor.ID_Contrato = Promedios.ID_Contrato)

    LEFT OUTER JOIN                          Medidores ON Join_Contrato_Medidor.ID_Medidor = Medidores.ID_Medidor)

    LEFT OUTER JOIN                          Marchamo ON Promedios.ID_Marchamo = Marchamo.ID_Marchamo)

    WHERE(Join_Contrato_Medidor.ID_Contrato =?)AND(Medidores.ID_Dispensario =?)AND(Join_Contrato_Medidor.Omitido<> TRUE)

    输出即时获取:

    信息栏| Omitido | ID_Union

    1. 信息|错| 806

    2. 信息|错| 806

    3. 信息|错| 806

    4. 信息|错| 806

    5. * 我想要包含一张图片,但在我有更多声誉之前我不能这样做:( *

      我现在正加入这4张桌子。我目前正在查询所需的所有列,但问题是我只想获取其中的记录--Join_Contrato_Medidor.Omitido<> true - 而不是获取与ID_Contrato和ID_Dispensario条件匹配的所有记录。

      作为示例,我输出ID_Union,它是Join_Contrato_Medidor的标识字段。它使用单个ID_Union标记所有记录,这恰好是4个中具有Omitido<>的唯一一个记录。真正。此外,最新的3条记录在数据库中将其Omitido字段设置为 true ,但在查询结果中显示为false。

      如果问题不清楚,请发给我说明。

      提前致谢

1 个答案:

答案 0 :(得分:0)

在处理其他事情之后,我不得不再次面对这个问题,我回来检查它。您的评论让我试着看看切换表的顺序是否可以完成工作,而且确实如此!非常感谢你。

我开始首先要求获得Proteios表,然后查询剩下的查询。这让我可以访问我想要的确切信息。此外,我按照此顺序创建了以下所有查询,并导致更短的查询。