Avatar billede bohbs Nybegynder
21. juli 2004 - 14:38 Der er 2 kommentarer og
2 løsninger

Selekte tabeller med to linjer

Jeg sidder med en kæmpe database hvor tabellerne blot hedder noget med fire karakterer. Jeg har derfor ingen anelse om hvilken tabel jeg leder efter, udover at jeg forventer kun at finde 2 linjer i tabellen. Kan man lave et selekt kald over tabeller med to linjer?

Beside: nogen der ved hvad en plukliste hedder på engelsk?
Avatar billede knowit-mmp Nybegynder
21. juli 2004 - 15:14 #1
Picklist kunne være et god bud på en plukliste....

Det andet kan jeg ikke umiddelbart hjælpe med...
Avatar billede spideren Nybegynder
22. juli 2004 - 13:05 #2
Hey

Først finder du alle tabeller med antal rows, og laver dit udtræk på det!

se her

/***********************/
/* CODE TAKEN FROM BIGTABLES.SQL */
/***********************/

declare @id    int           
declare @type    character(2)        
declare    @pages    int           
declare @dbname sysname
declare @dbsize dec(15,0)
declare @bytesperpage    dec(15,0)
declare @pagesperMB        dec(15,0)

create table #spt_space
(
    objid        int null,
    rows        int null,
    reserved    dec(15) null,
    data        dec(15) null,
    indexp        dec(15) null,
    unused        dec(15) null
)

set nocount on

declare c_tables cursor for
select    id
from    sysobjects
where    xtype = 'U'

open c_tables

fetch next from c_tables
into @id

while @@fetch_status = 0
begin
    /* Code from sp_spaceused */
    insert into #spt_space (objid, reserved)
        select objid = @id, sum(reserved)
            from sysindexes
                where indid in (0, 1, 255)
                    and id = @id

    update #spt_space
        set rows = i.rows
            from sysindexes i
                where i.indid < 2
                and i.id = @id
                and objid = @id

    fetch next from c_tables
    into @id
end


select
    Table_Name = (select left(name,25) from sysobjects where id = objid),
    rows = convert(int, rows)
       
from     #spt_space, master.dbo.spt_values d
where     d.number = 1
and     d.type = 'E'
and convert(int, rows) = 2
order by reserved desc

drop table #spt_space
close c_tables
deallocate c_tables

/***********************/
/* CODE TAKEN FROM BIGTABLES.SQL */
/***********************/


Ang dit beside spm. aner det ikke..
Avatar billede tjha Nybegynder
26. januar 2005 - 09:57 #3
Hej

Prøv med flg.

SELECT    name
FROM    sysobjects
WHERE    ID IN (
        SELECT    ID
        FROM    sysindexes
        WHERE    rowcnt = 2
        )

så skulle du få alle tabel navne med netop 2 rækker i.
Avatar billede bohbs Nybegynder
26. januar 2005 - 17:34 #4
Det er ikke aktuelt længere, jeg går ud fra begge løsninger har sine fordele, så I deler point
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