Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Upit iskljucivanje redova

[es] :: Baze podataka :: Upit iskljucivanje redova

[ Pregleda: 934 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dule_ns
Novi Sad

Član broj: 123863
Poruke: 257
*.oriontelekom.rs.



+690 Profil

icon Upit iskljucivanje redova08.06.2021. u 08:48 - pre 34 meseci
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)?
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Upit iskljucivanje redova08.06.2021. u 09:12 - pre 34 meseci
Što ne pspjiš upite za view2 i view3 u jedan?

 
Odgovor na temu

dule_ns
Novi Sad

Član broj: 123863
Poruke: 257
*.oriontelekom.rs.



+690 Profil

icon Re: Upit iskljucivanje redova08.06.2021. u 09:36 - pre 34 meseci
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)
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Upit iskljucivanje redova08.06.2021. u 09:38 - pre 34 meseci
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)
 
 
Odgovor na temu

[es] :: Baze podataka :: Upit iskljucivanje redova

[ Pregleda: 934 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.