Avatar billede autumn Nybegynder
03. oktober 2007 - 09:09 Der er 7 kommentarer

Select count() på en database uden angivelse af tabelnavn

Hej

Jeg ville høre om det er muligt at lave en count på en database uden angivelse af tabelnavn.

F.eks.
select count(idx) where id = 'test', hvor der her ikke er angivet et tabelnavn som den skal counte på, da den skal counte på hele databasen. Feltet som der skal countes på eksisterer i alle tabeller.
Avatar billede fennec Nybegynder
03. oktober 2007 - 09:11 #1
Det kan du ikke.
Avatar billede fennec Nybegynder
03. oktober 2007 - 09:13 #2
Det bliver du nød til at lave med noget union og inner select. Noget i denne stil:

select sum(antal) from (
select count(idx) as antal from table1 where id = 'test'
union
select count(idx) as antal from table2 where id = 'test'
union
select count(idx) as antal from table3 where id = 'test'
)
Avatar billede autumn Nybegynder
03. oktober 2007 - 09:30 #3
Ok - det var lidt det jeg frygtede
Avatar billede sherlock Nybegynder
03. oktober 2007 - 10:08 #4
Det er til gengæld muligt at bygge sql'en dynamisk ved at slå op i systemtabellerne og få en liste over dine tabeller.
Det er forskelligt hvordan man gør i forskellige databaser.
Avatar billede fennec Nybegynder
03. oktober 2007 - 10:21 #5
autumn >>
Går ud fra du er ved at lave et program, som skal bruge denne select. Hvilket sprog laver du det i (ASP, C#...). Deri kan du (som sherloc nævner) slå alle tabeller op, og derved opbygge din sql sætning.

sherlock >>
Nu er vi i MS SQL kategorien så der er ikke så mange muligheder bortset fra sysobjects tabellen :o)
SELECT    *
FROM        sysobjects
WHERE    (xtype = 'U')

Afhængig af hvilket programmeringssprog der bruges, kan det dog give os andre muligheder til at trække data ud. F.eks OpenSchema() funktionen.
Avatar billede pidgeot Nybegynder
03. oktober 2007 - 12:01 #6
Fennec: Jeg skulle mene MSSQL implementerer INFORMATION_SCHEMA, ligesom de fleste andre databaser. Det er den foretrukne måde at gøre det på, da det er en del af SQL-standarden.

Blot en lille kommentar. ;)

*går igen*
Avatar billede sherlock Nybegynder
09. oktober 2007 - 12:15 #7
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