04. november 2008 - 09:55Der 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
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?
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
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;
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".
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.