Я знаю, что такая проблема может случиться, но я понятия не имею, как ее понять (также, это на португальском языке, поэтому я постараюсь изо всех сил проиллюстрировать мой вопрос на английском языке, переведя структура базы данных, поля и т. д.).SQL Select with Join Bringing Odd Result
Это 4 таблицы, которые мне нужны для этого запроса:
- Agenda_Cliente (это таблица клиентов);
- Agenda_Imposto (это таблица налогов - описание для каждого налогового идентификатора);
- Agenda_ClienteImposto (таблица NxN - связывает каждого Клиента с налогами, которые он платит);
- Agenda_LogAgenda (вот в чем суть запроса: он содержит, какой налог (по идентификатору: CodigoImposto) был отправлен конкретному клиенту (по идентификатору также: CodigoCliente), когда был отправлен налог (DataHoraEnvio) и когда он был достигнут . (DataHoraAcesso)
в strctures являются следующие:
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]
Кроме того, внешние ключи все в порядке и работает
Итак, проблема:. у меня есть следующий 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
Но мне нужно, чтобы принести мне это:
И если я SELECT * в журнале Calendar (Agenda_LogAgenda), есть только одна запись.
Мне кажется, что это как-то связано с Agenda_ClienteImposto, насколько я пробовал здесь, но это может быть что-то вроде предложения JOIN, которое я не получаю, потому что он применяет результат для «Empresa 1» в «Empresa 3», но «Empresa 3» не существует в Agenda_LogAgenda.
Любая помощь приветствуется. Спасибо!
Сделайте выбор * на столе и посмотрите, есть ли у FK ваулы, которые вы ожидаете. – Leeish