[SQL] Select tabellen met geen records

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lendl Verschoor

Lendl Verschoor

25/09/2013 11:47:02
Quote Anchor link
Is het mogelijk om met een query alle tabel namen in een database te weergeven die geen records hebben?
Het gaat om een Microsoft DB Server (MSSQL)

Te snel gesproken, oplossing gevonden
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
    t.NAME AS TableName,
    i.name as indexName,
    p.[Rows],
    sum(a.total_pages) as TotalPages,
    sum(a.used_pages) as UsedPages,
    sum(a.data_pages) as DataPages,
    (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
    (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
    (sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
    sys.allocation_units a ON p.partition_id = a.container_id
WHERE
    t.NAME NOT LIKE 'dt%' AND
    i.OBJECT_ID > 255 AND  
    i.index_id <= 1
GROUP BY
    t.NAME, i.object_id, i.index_id, i.name, p.[Rows]
ORDER BY
    object_name(i.object_id)
Gewijzigd op 25/09/2013 11:50:02 door Lendl Verschoor
 
PHP hulp

PHP hulp

24/04/2024 07:18:03
 
Erwin H

Erwin H

25/09/2013 12:23:54
Quote Anchor link
Bedoel je in een query waarin je dynamisch de tabelnamen ophaalt en dan checkt of er records in zitten? Dan niet denk ik. Als je vooraf de namen gedefinieerd hebt (in elk geval voor de query), dan is het wel mogelijk. In dat geval zou je een count query voor elke tabel kunnen laten lopen en via een union die allemaal bij elkaar kunnen zetten. Zoiets bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT tabel_naam, aantal_records
FROM (
  SELECT 'tabel1' AS tabel_naam, COUNT(*) as aantal_records
  FROM tabel1
  UNION
  SELECT 'tabel2', COUNT(*)
  FROM tabel2
)
WHERE aantal_records = 0;

Wil je het echter dynamisch doen dan moet je selecteren uit een tabel naam die zelf in feite een parameter is. Bij mijn weten is dat niet mogelijk in SQL (maar wie beter weet: verbeter me).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.