この種の問題が発生する可能性があることは知っていますが、それを理解する方法はわかりません (また、ポルトガル語であるため、データベース構造、フィールドなどを翻訳して、質問を英語で説明するために最善を尽くします)。
これらは、このクエリに必要な 4 つのテーブルです。
- Agenda_Cliente (これはクライアント テーブルです)。
- Agenda_Imposto (これは Taxes テーブルです - 各税 ID の説明);
- Agenda_ClienteImposto (NxN テーブル - 各クライアントをそのクライアントが支払う税金に関連付ける);
- Agenda_LogAgenda (これがクエリの核心です。これには、どの税金 (ID: CodigoImposto) が特定のクライアント (ID: CodigoCliente) に送信されたか、いつ税金が送信されたか (DataHoraEnvio)、いつアクセスされたか (DataHoraAcesso) が含まれます。 )。
構造は次のとおりです。
CREATE TABLE [dbo].[Agenda_Cliente](
[CodigoCliente] [bigint] IDENTITY(1,1) NOT NULL,
[CodigoEscritorio] [int] NOT NULL,
[RazaoSocial] [varchar](60) NOT NULL,
[NomeFantasia] [varchar](60) NOT NULL,
[Email] [varchar](60) NOT NULL,
[TelefoneComercial] [bigint] NOT NULL,
[TelefoneCelular1] [bigint] NOT NULL,
[TelefoneCelular2] [bigint] NOT NULL,
[CnpjCpf] [bigint] NOT NULL,
[Cep] [int] NOT NULL,
[Endereco] [varchar](80) NOT NULL,
[Bairro] [varchar](60) NOT NULL,
[Municipio] [varchar](60) NOT NULL,
[Estado] [char](2) NOT NULL,
[RegimeTributacao] [int] NOT NULL,
[FlagAtivo] [bit] NOT NULL,
PRIMARY KEY CLUSTERED
(
[CodigoCliente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Agenda_Imposto](
[CodigoImposto] [int] IDENTITY(1,1) NOT NULL,
[DescricaoImposto] [varchar](30) NOT NULL,
[TipoImposto] [int] NOT NULL,
[DeptoResponsavel] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[CodigoImposto] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Agenda_ClienteImposto](
[CodigoClienteImposto] [bigint] IDENTITY(1,1) NOT NULL,
[CodigoCliente] [bigint] NOT NULL,
[CodigoImposto] [int] NOT NULL,
[DataLimite] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[CodigoClienteImposto] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
また、FOREIGN KEYS はすべて問題なく機能しています。
問題は次のとおりです。次の SQL SELECT クエリがあります。
SELECT c.CnpjCpf, c.NomeFantasia, i.DescricaoImposto, ci.DataLimite, la.DataHoraEnvio, la.DataHoraAcesso
FROM Agenda_Cliente c
JOIN Agenda_ClienteImposto ci ON ci.CodigoCliente = c.CodigoCliente
JOIN Agenda_Imposto i ON i.CodigoImposto = ci.CodigoImposto
LEFT JOIN Agenda_LogAgenda la ON la.CodigoImposto = i.CodigoImposto
WHERE c.CodigoEscritorio = 1
ORDER BY c.NomeFantasia ASC, ci.DataLimite ASC
また、カレンダー ログ (Agenda_LogAgenda) で SELECT * を実行すると、レコードは 1 つしかありません。
ここで試した限りでは、Agenda_ClienteImposto と関係があるように思えますが、「Empresa 3」の「Empresa 1」の結果を適用しているため、取得していない JOIN 句に関するものかもしれません。 、しかし、「Empresa 3」は Agenda_LogAgenda に存在しません。
どんな助けでも大歓迎です。ありがとう!

