[ dule_ns @ 08.06.2021. 08:48 ] @
Imam neki view (view1) koji uvezuje vise tabela i recimo da to ne mogu da diram. Rezultat koji dobijam je otprilike ovakav:

PermissionId | AccountDataId | ProfileCompanyId
------------------------------------
val.1 | acc1 | 1
val.1 | acc1 | 2
val.1 | acc1 | null
val.1 | acc2 | 1
val.1 | acc2 | 6
val.1 | acc2 | 8
val.1 | acc2 | 10
val.1 | acc3 | null

Zbog dodatnog uslova permissionid mi je uvek isti. Jedan account moze da ima pridruzen jedan ili vise company. Ako je companyid null, to znaci da moze da vidi za sve kompanije.

Ono sto meni treba jeste da ako neki AccountDataId ima ProfileCompanyId null i jos neke, da dobijem samo taj null, a ako nema null da izlistam sve koje ima, tj da dobijem sledece (da se crveno ne prikaze):

PermissionId | AccountDataId | ProfileCompanyId
------------------------------------
val.1 | acc1 | 1
val.1 | acc1 | 2
val.1 | acc1 | null
val.1 | acc2 | 1
val.1 | acc2 | 6
val.1 | acc2 | 8
val.1 | acc2 | 10
val.1 | acc3 | null


ono sto sam ja uradio je otprilike sledece:

napravim view2 da dobijem accounte koji su ProfileCompanyId null:

Code:
select distinct u1.* from view1 u1 where u1.ProfileCompanyId is null


napravim view3:

Code:
select PermissionId,  AccountDataId, ProfileCompanyId, UnitId, Condition, MeetingId  from view2

union 

select u.PermissionId,  u.AccountDataId, u.ProfileCompanyId, u.UnitId, u.Condition, u.MeetingId from view1 u
where not exists (select 1 from view2 u2 where u.AccountDataId = u2.AccountDataId and u.PermissionId = u2.PermissionId)


koji dalje koristim u upitu vec nekom trecem.

Da li ima lepse resenje (a verujem da ima)?
[ Predrag Supurovic @ 08.06.2021. 09:12 ] @
Što ne pspjiš upite za view2 i view3 u jedan?
[ dule_ns @ 08.06.2021. 09:36 ] @
Ovako nesto?

Code:
select u1.* from view1 u1 where u1.ProfileCompanyId is null

union

select u.PermissionId,  u.AccountDataId, u.ProfileCompanyId, u.UnitId, u.Condition, u.MeetingId from view1 u
where not exists (select 1 from view1 u2 where u.AccountDataId = u2.AccountDataId and u.PermissionId = u2.PermissionId and u2.ProfileCompanyId is null)
[ djoka_l @ 08.06.2021. 09:38 ] @
Code (sql):

SELECT *
FROM view1 v1
WHERE ProfileCompanyID IS NULL
OR NOT EXISTS (
   SELECT 1
   FROM view1 v2
   WHERE v2.AccountDataID = v1.AccountDataID
   AND v2.ProfileCompanyID IS NULL)