Porównywanie 2 tabel w bazie danych

Odpowiedz Nowy wątek
2018-03-14 15:00
0

Witam mam taki problem i nie do końca mogę znaleźć rozwiązanie. Potrzebuje stworzyć zapytanie, w którym 2 tabele zostaną ze sobą porównane nie pod kontem rekordów a pod kontem kolumn. Przykładowo mamy jedną tabele, która posiada 100 kolumn i drugą, która jest bardzo podobna i chcę ze sobą porównać je i sprawdzić które których kolumn nie ma jednej z nich.

Pozostało 580 znaków

2018-03-19 16:59
0

Zmieniasz tylko nazwę tabeli w warunku where na nazwę widoku nic innego nie ruszasz...

Pozostało 580 znaków

2018-03-20 12:08
0

Kiedy próbuje zmienić samą tabelę na widok to pokazuje pustą kolumnę..

SELECT kolA,
KolB
FROM
(
SELECT column_name kolA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'View1'
) a
FULL JOIN
(
SELECT column_name kolB
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'View2'
) b ON a.kolA = b.kolB

WHERE
kolA IS NULL OR kolb IS NULL;

SELECT* FROM [Project].[dbo].[View1] --- zwraca wszystkie kolumny z danymi

próbowałem też do TABLE_NAME podać "[Project].[dbo].[View1]" ale nie działa

Wrzucam załącznik ze screenem

Pozostało 580 znaków

2018-03-20 12:15
0

A nie wpadło Ci do głowy, ze może ich struktura jest taka sama?

Puść bez warunku where:

SELECT kolA,
KolB
FROM
(
SELECT column_name kolA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'View1'
) a
FULL JOIN
(
SELECT column_name kolB
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'View2'
) b ON a.kolA = b.kolB

Bo jak można się przekonać dla widoków też działa: http://sqlfiddle.com/#!18/0fa95/1

Pozostało 580 znaków

2018-03-20 12:22
0

ale ich struktura własnie nie jest taka sama(puszczałem bez where). Stworzyłem tak te widoki, że w jednym jest mniej o jedną kolumnę reszta jest taka sama, ale ten jeden null powinien pokazać.
Z resztą jak nawet sobie testowałem to tak, że zaznaczyłem fragment pierwszej części i dałem EXECUTE to wywołuje to samo czyli pokazuje puste kolA

edytowany 2x, ostatnio: Johny850, 2018-03-20 12:26

Pozostało 580 znaków

2018-03-20 12:23
0

A co zwracają poszczególne podzapytania?

Pozostało 580 znaków

2018-03-20 12:25
0
Panczo napisał(a):

A co zwracają poszczególne podzapytania?
edytowałem wyżej, opisałem bardziej szczegółowo

Pozostało 580 znaków

2018-03-20 12:30
0

No to po kolei:

Czy zapytanie:

 SELECT distinct table_catalog, table_name
    FROM INFORMATION_SCHEMA.COLUMNS

Zwróci porównywane widoki?

Pozostało 580 znaków

2018-03-20 12:34
0

Nie nie ma tam ich.

A czy w w strukturze - " WHERE TABLE_NAME = N'View1'" zamiast N'VIEW1' mogę wkleić dokładne umiejscowienie widoku czyli coś takiego - "N'[Project].[dbo].[View1]'" ?

Dodam jeszcze, że widoki są w osobym folderze w całej strukturze bazy - w folderze VIEWS

edytowany 1x, ostatnio: Johny850, 2018-03-20 12:39

Pozostało 580 znaków

2018-03-20 12:42
0

Możesz, to tylko zapytanie nikt nie broni, szukaj czego chcesz, tylko pamiętaj, ze kolumna table_name zawiera nazwę tabeli, schemat i baza są w innych kolumnach...

Jeżeli nie widzisz kolumn z tych widoków, a masz pewność, że te widoki są to jedyne co zostaje to uprawnienia do podglądu definicji tych obiektów (VIEW DEFINITION)

Pozostało 580 znaków

2018-03-20 12:42
0

Możesz to wkleić.
Ale wtedy nie dostaniesz NIC :)

W INFORMATION_SCHEMA.COLUMNS powinny być również kolumny SCHEMA_NAME i TABLE_NAME. Użyj ich.

Równocześnie się nam udało dodać odpowiedź ;) - Panczo 2018-03-20 12:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0