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.
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' )
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.
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.
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.
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.