0

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

  1. Join_Contrato_Medidor

    • ID_Union(身份)
    • ID_Contrato
    • ID_Medidor
    • Omitido(过滤器?)
  2. 普罗梅迪奥斯

    • ID_Contrato
    • ID_Medidor
    • ID_Marchamo
    • {我想要的信息}
  3. 梅多雷斯

    • ID_Medidor
    • ID_Dispensario(过滤器?)
  4. 马尔卡莫

    • ID_Marchamo

我当前的 SQL 语句...

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

从 (((

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)

我得到的输出:

信息栏 | 奥米蒂多 | ID_Union

  1. 信息 | 假 | 806

  2. 信息 | 假 | 806

  3. 信息 | 假 | 806

  4. 信息 | 假 | 806

*我想包括一张图片,但在我获得更多声誉之前我不能这样做:( *

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

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

如果问题不清楚,请发帖给我澄清。

提前致谢

4

1 回答 1

0

在处理其他事情直到我不得不再次面对这个问题之后,我回来检查它。你的评论让我试着看看切换表格的顺序是否能完成这项工作,它确实做到了!非常感谢。

我首先开始询问 hte Promedios 表,然后执行其余的查询。这使我可以访问我想要的确切信息。此外,我按照此顺序创建了以下所有查询,并导致更好的更短查询。

于 2013-08-10T18:51:03.623 回答