Почему это проблема?Результаты просто показывают, что у вас есть отношение 1: M (один ко многим) между VBen: Vass (A)
Если у вас нет отношения 1: M, и оно должно быть 1: 1, тогда ...
- вам не хватает критериев соединения между таблицами.
- вы должны получать минимальную / максимальную дату вместо всех дат в benbanls
Чтобы лучше понять и ответить, нам нужно знать, что на самом деле представляют VBen и Vass;Проще говоря, у вас есть несколько VASS(A)
на VBEN
Для иллюстрации на примере: Подумайте о таблицах Order_Header и Order_Line ...
Order_header содержит (order_Number PK) Order_line содержит(Order_Number, Order_Line PK)
Заказ может состоять из нескольких строк, каждая строка может иметь свою собственную дату отгрузки, и несколько товаров могли быть отправлены в один и тот же день / день.где некоторые, которые были отстранены, вышли в другой день.В этой ситуации в заказе по-прежнему будет несколько строк, даже если в подзапросе мы различаем order_number и shipmentdate.Я полагаю, что ваша ситуация аналогична.
, поэтому 1 в базовой таблице * 2 строки в производной таблице / таблицах строк дают нам 2 записи
1 <2, то есть ситуация, в которой вы сейчас находитесь;и это для меня совершенно нормально и ожидаемо, если это отношения 1: М. </p>
- Может быть, вам нужно указать минимальную или максимальную дату вместо отдельной?
- Если нетвам не хватает критериев объединения, чтобы установить отношения 1: 1
- возможно, ваши ожидания просто ошибочны.
Ниже приведено соотношение 1: 1, но я неуверен, что это то, что вы ищете.
SELECT distinct VBen.BENF_NO_INDIV_BEN_BANLS as benbanls,
VBen.BENF_COD_SEXE AS Sexe,
VBen.BENF_DAT_NAISS AS DatNaiss,
VBen.BENF_DAT_DECES AS DatDec,
A.date_ch as date_chsld
FROM PROD.V_FICH_ID_BEN_CM AS VBen
LEFT JOIN (SELECT VAss.BENF_NO_INDIV_BEN_BANLS as benbanls,
Max(vass.BENF_DD_ADMIS_ASSU_MED) as date_ch
FROM Prod.V_ADMIS_ASSU_MED_PLAN_PRIOR_CM as vass
GROUP BY VAss.BENF_NO_INDIV_BEN_BANLS) as A
on VBen.BENF_NO_INDIV_BEN_BANLS = A. benbanls
WHERE (Vben.BENF_DAT_NAISS>'2016-04-01'
or Vben.BENF_DAT_DECES>'2011-04-01)