Avatar billede baitianlong Nybegynder
04. november 2008 - 09:55 Der er 4 kommentarer og
1 løsning

Query paa samme felt i flere tabeller

Hej, jeg er ude efter en SQL saetning, som kan give mig en liste over antal forekomster af et felt i flere tabeller. Hvis det var een tabel, ville jeg sige:

SELECT subject, COUNT(*) AS n FROM tabel1 GROUP BY subject ORDER BY n DESC

ResultSettet ville saa vaere:

Tandhvaler    24
Bogorme      13
Hestehaler    8
Bananfluer    3

Men jeg vil have dem talt fra tre forskellige tabeller. De tre tabeller har ikke samme struktur, men de har alle et 'subject' felt. Hvordan skal det skrives?
Avatar billede aaberg Nybegynder
04. november 2008 - 10:05 #1
noget lignende dette (Ikke testet, da jeg ikke har en oracle database til rådighed):

select t.subject, count(t.subject) as n
from
(select subject
from tabel1
union select subject
from tabel2
union select subject
from tabel3) t
group by t.subject
order by n desc
Avatar billede baitianlong Nybegynder
04. november 2008 - 10:25 #2
Den er ikke helt god. Du kan se her:

SQL> select count(*) from tabel1 where subject='Testsubject';

  COUNT(*)
----------
        3

SQL> select count(*) from tabel2 where subject='Testsubject';

  COUNT(*)
----------
        1

SQL> select count(*) from tabel3 where subject='Testsubject';

  COUNT(*)
----------
        1

SQL> select t.subject, count(t.subject) as n from (select subject from tabel1 unio
n select subject from tabel2 union select subject from tabel3) t group
by t.subject order by n desc;

SUBJECT
--------------------------------------------------------------------------------

        N
----------
Testsubject
        1

Income tax
        1

Global Meltdown
        1


Som du kan se siger den at n ved 'Testsubject' er 1, men det burde vaere 5.
Avatar billede aaberg Nybegynder
04. november 2008 - 10:38 #3
Når jeg tænker mig om giver det faktisk mening, da den automatisk gruppere når man bruger Union select. Prøv at skifte alle "UNION" ud med "UNION ALL".
Avatar billede baitianlong Nybegynder
04. november 2008 - 10:52 #4
Det virkede :)... Smider du et svar
Avatar billede aaberg Nybegynder
04. november 2008 - 11:01 #5
:-)
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