Avatar billede gadebarnet Nybegynder
08. marts 2004 - 10:45 Der er 7 kommentarer og
1 løsning

hjælp til sammenligning

Jeg har 3 tabeler...

tabel1
tabel2
tabel3



det er samme tabeller (når vi taler felter, men med forskelligt indhold og antal)


f.eks

tabel1:
id - type - emne - ok
0 - ost - test - 0
1 - mad - test - 0
2 - fis - pede - 1



tabel2:
id - type - emne - ok
0 - ost - test - 1
1 - mad - test - 0
2 - fis - pede - 0





tabel3:
id - type - emne - ok
0 - ost - test - 1
1 - mad - test - 0
2 - fis - pede - 1




Jeg skal så have et view der kan vise at alle 3 var med men det var kun

0 - ost - test
og
2 - fis - pede

der havde ok = 1 på et eller andet tidspunkt...

og at

1 - mad - test

aldrig havde en ok = 1 men en ok = 0





er det til at forstå?
Avatar billede proaccess Nybegynder
08. marts 2004 - 10:50 #1
Prøv med:

SELECT id, type, emne FROM tabel1 WHERE ok=1
UNION SELECT id, type, emne FROM tabel2 WHERE ok=1
UNION SELECT id, type, emne FROM tabel3 WHERE ok=1
Avatar billede trer Nybegynder
08. marts 2004 - 10:52 #2
du kan lægge dine tabeller sammen med en UNION

create view subview
as
select * from tabel1
union
select * from tabel2
union
select * from tabel3
go

så kan du derefter selecte fra den samling.  Noget i denne stil

select * from subview
where ok=1
union all
select * from subview s
where ok=0 and not exists (select 1 from subview v where s.id=v.id and ok=1)

Ikke særlig god performance i ovenstående - men det burde virke.
Avatar billede gadebarnet Nybegynder
08. marts 2004 - 11:06 #3
ok, så er den i hus, men hvad nu hvis jeg gerne vil vide følgende...

hvor mange var OK = 1 og hvor mange var OK = 0

???
Avatar billede trer Nybegynder
08. marts 2004 - 11:11 #4
Så skal du ændre i subview fra UNION til UNION ALL og du skal lave dit udtræk med en GROUP BY a la

select id, type, emne, count(*) as OK1
from subview
where ok=1
group by ok
union all
select id, type, emne, count(*) as OK0
from subview
where ok=0 and not exists (select 1 from subview v where s.id=v.id and ok=1)
group by ok
Avatar billede gadebarnet Nybegynder
08. marts 2004 - 11:14 #5
gidder du lige smække det der sammen til een "ting" ???
Avatar billede trer Nybegynder
08. marts 2004 - 11:17 #6
Eh... således?

create view subview
as
select * from tabel1
union  all
select * from tabel2
union  all
select * from tabel3
go

select id, type, emne, ok, count(*) as antal
from subview
where ok=1
group by ok
union all
select id, type, emne, ok, count(*)
from subview
where ok=0 and not exists (select 1 from subview v where s.id=v.id and ok=1)
group by ok
Avatar billede trer Nybegynder
11. marts 2004 - 10:45 #7
fungerer det?
Avatar billede trer Nybegynder
30. marts 2004 - 08:45 #8
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester