0

できるだけ明確にするために、次のようにデータベースに4つのテーブルがあります

  1. Join_Contrato_Medidor

    • ID_Union (ID)
    • ID_Contrato
    • ID_メディドール
    • オミチド(フィラー?)
  2. プロメディオス

    • ID_Contrato
    • ID_メディドール
    • ID_マルチャモ
    • {欲しい情報}
  3. メディドア

    • ID_メディドール
    • ID_Dispensario (フィルター ?)
  4. マルチャモ

    • ID_マルチャモ

私の現在のSQLステートメント...

SELECT {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_ユニオン

  1. 情報 | 偽 | 806

  2. 情報 | 偽 | 806

  3. 情報 | 偽 | 806

  4. 情報 | 偽 | 806

*画像を含めたかったのですが、評判が良くなるまではできません :( *

現在参加している 4 つのテーブルがあります。現在、クエリで出力する必要があるすべての列を取得していますが、問題は、ID_Contrato と一致するすべてのレコードを取得するのではなく、--Join_Contrato_Medidor.Omitido <> true-- であるレコードのみを取得したいということです。 ID_Dispensario 条件。

サンプルとして、Join_Contrato_Medidor の ID フィールドである ID_Union を出力しています。すべてのレコードを 1 つの ID_Union でマークしていますが、これはたまたま Omitido <> が true である 4 つのレコードのうちの 1 つのレコードです。また、最新の 3 つのレコードでは、データベースで Omitido フィールドがtrueに設定されていますが、クエリ結果では false と表示されています。

質問が不明な場合は、明確にするために投稿してください。

前もって感謝します

4

1 に答える 1

0

この問題に再び直面しなければならないまで他のことに取り組んだ後、私は戻ってチェックしています。あなたのコメントにより、テーブルの順序を切り替えることでうまくいくかどうかを試してみましたが、うまくいきました! どうもありがとうございました。

最初に Promedios テーブルを要求し始め、残りのクエリを実行しました。これにより、私が欲しかった正確な情報にアクセスできました。さらに、この順序に従って作成した次のすべてのクエリは、より短いクエリにつながります。

于 2013-08-10T18:51:03.623 に答える