Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.522 pregleda

Najnovija ↓

Upit iskljucivanje redova 08.06.2021. u 09:48 · pre 66 meseci #1
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)?
Re: Upit iskljucivanje redova 08.06.2021. u 10:36 · pre 66 meseci #3
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)
Re: Upit iskljucivanje redova 08.06.2021. u 10:38 · pre 66 meseci #4
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)
 
Sviđa mi se1
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme