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-14 15:03
0

where not exists


Tak ale to jest do zawartości kolumn a mi chodzi o same kolumny. SELECT FROM [Database].[dbo].[Table1] WHERE NOT EXISTS (SELECT FROM [Database].[dbo].[Table2]) - Johny850 2018-03-14 15:25

Pozostało 580 znaków

2018-03-14 15:28
0

Tak ale to jest do zawartości kolumn a mi chodzi o same kolumny. SELECT FROM [Database].[dbo].[Table1] WHERE NOT EXISTS (SELECT FROM [Database].[dbo].[Table2]) ---> nic mi to nie daje

edytowany 1x, ostatnio: Johny850, 2018-03-14 15:29

Pozostało 580 znaków

2018-03-14 15:28
0

Jaki silnik bazy danych?


edytowany 1x, ostatnio: Patryk27, 2018-03-14 15:28

Pozostało 580 znaków

2018-03-14 15:29
0

MS SQL

Pozostało 580 znaków

2018-03-14 15:36
2
SELECT kolA,
       KolB
FROM
(
    SELECT column_name kolA
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'nazwa_tabeli_1'
) a
FULL JOIN
(
    SELECT column_name kolB
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'nazwa_tabeli_2'
) b ON a.kolA = b.kolB;
Information_schema POWINNA zadziałać wszędzie. Na pewno postrgrSQL, MySQL, MS SQL - Marcin.Miga 2018-03-14 15:50
W Oracle to samo zrobić z widokiem systemowym dba_tab_cols i zadziała gdyby ktoś szukał. - Piotrek_dev 2018-03-14 20:13

Pozostało 580 znaków

2018-03-14 15:42
0

Dziękuję Panczo, ale to nie jest cały czas to o co pytam. Jeśli będe miał na przykład 1000 kolumn to nie chce ich wypisywać po kolei. Chce CAŁE 2 tabele ze sobą porównać, takie które mają dowolną ilość kolumn w celu sprawdzenia które kolumny z tabeli 1 występuję w tabeli 2 ale bez wypisywania poszczególnych kolumn w selekcie

edytowany 2x, ostatnio: Johny850, 2018-03-14 15:44
Nawet nie sprawdziłeś tego co podałem: http://sqlfiddle.com/#!18/fa83e/5 - Panczo 2018-03-14 15:53

Pozostało 580 znaków

2018-03-14 15:47
0

To co Ci podałem zwróci Ci w wyniku kolumny z tabeli nazwa_tabeli_1 (kolA) i kolumny z nazwa_tabeli_2 (kolB) jeżeli jakiejś kolumny nie będzie w nazwa_tabeli_2 to kolumna będzie miała wartość null i anlogicznie w drugą stronę. Jeżeli chcesz zobaczyć różnicę to wystarczy dodać warunek:

where
   kolA is null or kolb is null

Czego innego oczekujesz?

edytowany 1x, ostatnio: Panczo, 2018-03-14 15:47

Pozostało 580 znaków

2018-03-19 08:17
0

Dziękuję bardzo Panczo! Widziałem to troche inaczej w głowie, ale finalnie o to właśnie jednak chodzi :) Natomiast mam jeszcze jedno pytanie. Czy taką samą funkcję można stworzyć dla widoków w MS SQL.
próbowałem zmienić to dla widoków ale wyrzuca jakieś błędy i nie działa.

Pozostało 580 znaków

2018-03-19 08:23
0

Dokładnie tak samo zadziała dla widokow z tym że zamiast nazwy tabeli podajesz nazwę widoku.

Pozostało 580 znaków

2018-03-19 16:40
0

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

WHERE
kolA IS NULL OR kolb IS NULL;

Czyli coś takiego?

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