Postgres przecinają polecenie

Postgres przecinają polecenie
PostgreSQL przecinają się funkcja łączy wynikowe wartości dwóch lub więcej instrukcji wybranych. Ta opcja służy do pobierania wspólnych bytów w dwóch lub więcej tabelach. Następnie uzyskuje się pojedynczą wartość wynikową. Uzyskany jest zestaw wierszy, który jest obecny w obu tabelach. Ta funkcja jest bardzo pomocna w pobieraniu wszystkich wspólnych rekordów w jednym zapytaniu, używając więcej.

Składnia

Wybierz nazwę kolumn_name1, nazwa_polutwa2 z tabeli 1
PRZECINAĆ
Wybierz nazwa_polutwa 1, nazwa_polutna2 z tabeli 2

Jest to podstawowa składnia funkcji przecięcia. Można to zmienić, dodając gwiazdkę dla wszystkich danych, nie określając nazw kolumn. Polecenie działa w sposób, w jaki oba instrukcje wybrane będą działać i pobierać rekord, a następnie funkcja przecinka wybierze wspólne dane i usunie nietypowy.

Działanie funkcji Intersect w PostgreSQL

  • Ta funkcja jest używana tylko wtedy, gdy mamy wspólne dane lub zduplikowane dane w obu określonych kolumnach.
  • Pomaga poradzić sobie z więcej niż jednym tabelą przyciągającym te same podmioty z tabel.

Aby zaimplementować polecenie Intersect, musimy utworzyć trzy tabele tutaj. Możemy na przykład użyć dowolnej tabeli, ale aby zrozumieć koncepcję przecięcia, musimy odziedziczyć niektóre atrybuty i utworzyć wspólne. Pierwszy będzie zawierał całą informację o ucznia. Podczas gdy drugie i trzecie tabele będą zawierać część informacji dodanych w pierwszej. Więc utworzymy pierwszą tabelę o nazwie Student.

>> Utwórz student tabeli (
Student_id Serial Ceyer,
Student_name varchar (255) nie null
);

Tabela zawiera dwie kolumny, identyfikator studenta i nazwisko ucznia. Teraz dalej stworzymy dwa tabele o nazwie temat i praktyczne. Obie tabele pochodzą od studenta tabeli rodziców. Aby je podłączyć, oba tabele będą zawierać klucz podstawowy tabeli studenckiej jako ograniczenie klucza obcego, aby utworzyć połączenie między wszystkimi tabelami. Obie poniższe tabele mają jeden własny atrybut i jeden atrybut jako klucz podstawowy wyeksportowany z tabeli studenckiej.

Utwórz temat tabeli (
student_id int podstawowy,
DATA DEW_DATE NIE NULL,
Klucz zagraniczny (Student_id) Referencje Student (Student_ID)
);
Stwórz tabelę praktyczną (
student_id int podstawowy,
DATA DEW_DATE NIE NULL,
Klucz zagraniczny (Student_id) Referencje Student (Student_ID)
);

Po utworzeniu wszystkich tabel użyjemy instrukcji Insert, aby wprowadzić w nim dane. Każda tabela otrzyma dane po wykonaniu polecenia.

>> Włóż do Student (Student_name) Wartości („Thomas”), („Bay Hikel”), („Jason Sily”), („Robert Hunt”), („Arjit suba”), („Micky Angel”), („Shweta Singh”), („Tom Ridle”), („Sabana”), („Timmy Honad”);

Możesz zobaczyć, że dane są wstawiane tylko do kolumny nazwy; Kolumna identyfikacyjna jest wypełniona automatycznie jak numer seryjny. A wartości w kolumnie ID podmiotu i praktyczne tabele zostaną wypełnione z tabeli tematu. Ale wstawienie w temacie i praktyczna tabela będzie w taki sposób, że niektóre identyfikatory w obu tabelach powinny być podobne do radzenia sobie z sytuacją, którą zastosowaliśmy.

Podobnie podmiot i praktyczne tabele są wstawiane przez dane.

Wstaw do wartości przedmiotowych (1, „2000-02-01”), (2, „2001-06-01”), (5, „2002-01-01”), (7, „2005-06-01” );
>> Wstaw do wartości praktycznych (9, „2000-01-01”), (2, „2002-06-01”), (5, „2006-06-01”), (10, 2005-06-- 01 ');

Tabela tematu:

Praktyczny stół:

Teraz użyjemy instrukcji Select, aby zobaczyć wstawione dane w tabeli studenckiej.

>> Wybierz * od studenta;

Przykład 1

Ten przykład pokaże zapis uczniów, którzy dołączyli zarówno do przedmiotów, jak i praktyczne z tabeli studenckiej. Zostanie to zrobione przy użyciu oświadczenia przecinającego stosowane zarówno na temat, jak i praktyczną tabelę. To polecenie będzie działać w taki sposób, że rozważy identyfikatory uczniów zarówno w temacie, jak i w klasie praktycznej. Te identyfikatory, które są powszechne w obu tabelach, zostaną pobierane osobno.

>> Wybierz Student_ID z tematu Intersect Wybierz Student_ID z praktycznego;

Sprowadzi to dwa wiersze, ponieważ tylko dwóch studentów zapisało się zarówno na tematy, jak i praktyczne. Oba identyfikatory mają osobne daty łączenia, dlatego nie pobiliśmy tej kolumny.

Teraz rozważ scenariusz, w którym chcemy pobrać rekord z kolumny ID i kolumny Join_Date z jednej tabeli, która przecina dane w kolumnie identyfikacyjnej praktycznej tabeli, a następnie zgadnij, co się stanie?

>> Wybierz Student_ID, Join_Date z Temat Intersect Wybierz Student_ID z praktycznego;

Wystąpi błąd, ponieważ aby zastosować funkcję przecięcia, musieliśmy wspomnieć o tej samej liczbie kolumn w obu tabelach. W przeciwnym razie zapytanie nie zadziała.

Aby przezwyciężyć ten błąd, teraz weźmiemy obie kolumny dla obu tabel, aby zastosować się do Intersect, ale niestety nie ma jednego wiersza, który pasuje do Join_Date. Jeśli jakakolwiek data połączenia w obu tabelach jest taka sama, wówczas wynikowa wartość musi mieć dwie kolumny o wspólnym wierszu obu dotkniętych tabel.

>> Wybierz Student_ID, Join_Date z Temat Intersect Wybierz Student_ID, Join_Date z Practical;

Przykład 2

Ten przykład zawiera to samo polecenie Intersect, ale teraz w poleceniu dodawane są niektóre dodatkowe funkcje. Ta funkcja służy do ustalenia wynikającego wyniku. Ale jak wspominamy „DESC” z tą klauzulą, wynik jest ułożony w kolejności malejącej.

>> Wybierz Student_ID z tematu Intersect Wybierz Student_ID z praktycznych zamówień według studenta_dów;

Ze wyjścia widać, że wartości zostały po raz pierwszy ułożone w kolejności rosnące.

Przykład 3

W tym przykładzie zastosujemy polecenie Intersect w kolumnie Student_ID tematu i tabeli uczniów. Wtedy te identyfikatory, do których wprowadziliśmy tylko w tabeli tematu, zostaną pobrane.

>> Wybierz Student_ID z Temat Intersect Wybierz Student_ID od studenta;

Przykład 4

Jeśli zastosujesz funkcję przecięcia w tej samej tabeli, którą wybrałeś. Możesz zobaczyć, że zastosowaliśmy polecenie Intersect w praktycznej tabeli bez określenia kolumny, więc wszystkie dane wraz z datą połączenia są pobierane.

>> Wybierz * z praktycznego przecięcia Wybierz * z praktycznego;

Postgres przecinają polecenie za pośrednictwem PGADMIN

Teraz sprawdzimy polecenie Intersect w pulpicie nawigacyjnym PGADMIN, tak jak PSQL. Po otwarciu interfejsu przejdź do tabel w bazie danych Postgres i opcje sekwencji. Rozszerzaj dalej, dopóki nie otrzymasz opcji tabel, teraz wybierz student tabeli, a następnie przejdź do narzędzia zapytania, aby użyć polecenia.

>> Wybierz Student_ID z Practical Intersect Wybierz student_id od studenta;

Zmieniliśmy powyższe zapytanie, w którym funkcja przecięcia jest stosowana w praktyce i tabeli studenckiej.

Po zastosowaniu zapytania wykonaj je, wybierając opcję. Zobaczysz, że wszystkie wspólne identyfikatory są pobierane z obu określonych tabel w poleceniu.

Wniosek

Artykuł „Postgres Intersect Command” opisuje działanie tego operatora w systemie bazy danych PostgreSQL. Niektóre podstawowe przykłady są tutaj używane do szczegółowego opisania jego pracy. Każde wspólne dane można łatwo pobrać, używając tej funkcji przecięcia w poleceń, aby uniknąć redundancji i sprzężenia danych w bazie danych.