Postgres krysser kommandoen

Postgres krysser kommandoen
PostgreSql krysser funksjonen kombinerer de resulterende verdiene til to eller flere utvalgte utsagn. Dette alternativet brukes til å hente de vanlige enhetene i to eller flere tabeller. Da oppnås en enkelt resulterende verdi. Det oppnås et sett med rader som er til stede i begge tabellene. Denne funksjonen er veldig nyttig i å hente alle vanlige poster i en enkelt spørring ved å bruke mer.

Syntaks

Velg kolonne_name1, kolonne_name2 fra tabell1
KRYSSE
Velg kolonne_name1, kolonne_name2 fra tabell2

Dette er en grunnleggende syntaks for kryssfunksjonen. Dette kan endres ved å legge til en stjerne for alle dataene ved ikke å spesifisere kolonnenavn. Kommandoen fungerer på en måte som både de utvalgte utsagnene vil fungere og hente posten, og deretter vil kryssfunksjonen velge de vanlige dataene og fjerne den uvanlige.

Arbeid av kryssfunksjon i PostgreSQL

  • Denne funksjonen brukes bare når vi har vanlige data eller dupliserte data i begge de spesifiserte kolonnene.
  • Det hjelper å takle mer enn en tabell som henter de samme enhetene fra tabellene.

For å implementere den kryssende kommandoen, må vi lage tre tabeller her. Vi kan bruke hvilken som helst tabell for eksempel, men for å forstå skjæringsbegrepet, må vi arve noen attributter og lage et ledd. Den første vil inneholde hele informasjonen om studenten. Mens andre og tredje tabeller vil inneholde en del av informasjonen som er lagt til i den første. Så vi lager den første tabellen som heter Student.

>> Lag tabellstudent (
student_id seriell primærnøkkel,
Student_name varchar (255) ikke null
);

Tabellen inneholder to kolonner, student -ID og studentens navn. Nå vil vi lage to tabeller som heter emne og praktisk. Begge bordene har sin opprinnelse fra foreldrebordstudenten. Så for å koble dem sammen, vil begge tabellene inneholde den primære nøkkelen til studentbordet som en fremmed nøkkelbegrensning for å lage et ledd mellom alle tabellene. Begge de nevnte tabellene nedenfor har ett attributt for seg selv og ett attributt som en primær nøkkel som eksporteres fra studentbordet.

Lag tabellfag (
student_id int primærnøkkel,
join_date date ikke null,
Utenlandsk nøkkel (student_id) Referanser Student (student_id)
);
Lag tabell praktisk (
student_id int primærnøkkel,
join_date date ikke null,
Utenlandsk nøkkel (student_id) Referanser Student (student_id)
);

Etter opprettelsen av alle tabellene, vil vi bruke en innsatserklæring for å legge inn data i den. Hver tabell vil få data etter utførelsen av kommandoen.

>> Sett inn student (Student_name) verdier ('Thomas'), ('Bay Hikel'), ('Jason Sily'), ('Robert Hunt'), ('Arjit Suba'), ('Micky Angel'), ('Shweta Singh'), ('Tom Ridle'), ('Sabana'), ('Timmy Honad');

Du kan se at dataene bare settes inn i Navn -kolonnen; ID -kolonnen fylles automatisk som serienummeret. Og verdiene i ID -kolonnen i emnet og praktiske tabeller vil bli fylt fra emnetabellen. Men innsatsen i emnet og den praktiske tabellen vil være på en slik måte at noen ID -er i begge tabellene skal være lik å takle situasjonen vi hadde brukt.

Tilsvarende er emnet og de praktiske tabellene satt inn av data.

Sett inn emneverdier (1, '2000-02-01'), (2, '2001-06-01'), (5, '2002-01-01'), (7, '2005-06-01' );
>> sett inn i praktiske verdier (9, '2000-01-01'), (2, '2002-06-01'), (5, '2006-06-01'), (10, '2005-06- 01 ');

Emnebord:

Praktisk tabell:

Nå vil vi bruke en valgt uttalelse for å se de innsatte dataene i studenttabellen.

>> velg * fra student;

Eksempel 1

Dette eksemplet vil vise posten til de studentene som har sluttet seg til både fagene og det praktiske fra studentbordet. Dette vil bli gjort ved å bruke en kryssende setning som brukes på både fag og den praktiske tabellen. Denne kommandoen vil fungere på en slik måte at den vil vurdere student -ID -ene i både emnet og den praktiske klassen. De ID -ene som er vanlige i begge tabellene, vil bli hentet separat.

>> velg student_id fra emne krysser student_id fra praktisk;

Dette vil hente to rader da bare to studenter har meldt seg inn i både fagene og det praktiske. Begge ID -ene har separate sammenføyningsdatoer, det er derfor vi ikke har hentet den kolonnen.

Tenk nå på et scenario der vi ønsker å hente posten fra ID -kolonnen og COMM_DATE -kolonnen fra en tabell som krysser dataene i ID -kolonnen i den praktiske tabellen, og gjett hva som vil skje?

>> velg student_id, join_date fra emne krysser

Det vil oppstå en feil fordi for at kryssfunksjonen skal brukes, må vi ha nevnt samme antall kolonner i begge tabellene. Ellers fungerer ikke spørringen.

Så for å overvinne denne feilen, vil vi nå ta begge kolonnene for begge tabellene for å gjelde kryss, men dessverre er det ikke en eneste rad som stemmer overens med join_date. Hvis noen dato for å bli med i begge tabellene er den samme, må den resulterende verdien ha to kolonner med en felles rad med begge berørte tabeller.

>> velg student_id, join_date from emne krysser

Eksempel 2

Dette eksemplet inkluderer den samme kryssende kommandoen, men nå er noen tilleggsfunksjoner lagt til i kommandoen som er pålegg etter klausul. Denne funksjonen brukes til å ordne det hentede resultatet. Men som vi nevner 'Desc' med denne klausulen, er resultatet ordnet i synkende rekkefølge.

>> velg student_id fra emne kryss

Fra utgangen kan du se at verdiene først ble arrangert i stigende rekkefølge, men Desc har konvertert dem omvendt.

Eksempel 3

I dette eksemplet vil vi bruke kryssets kryss på Student_id -kolonnen i emnet og studentbordet. Da vil de ID -ene som vi bare har skrevet inn i emnebordet, hentes.

>> velg student_id fra emne kryss

Eksempel 4

Hvis du bruker en kryssfunksjon på samme tabell som du har valgt, vil den hente alle postene til tabellen akkurat som den resulterende verdien oppnådd fra SELECT -setningen. Du kan se at vi har brukt kryssets kryss på den praktiske tabellen uten å spesifisere kolonnen, så alle dataene sammen med sammenføyningsdatoen henter.

>> velg * fra praktisk krysset velger * fra praktisk;

Postgres krysser kommandoen via pgadmin

Nå vil vi sjekke kryssets kommando i pgadmin -dashbordet akkurat som PSQL. Etter å ha åpnet grensesnittet, gå til tabellene i Postgres -databasen og sekvensalternativene. Fortsett å utvide til du får alternativet Tabell.

>> velg student_id fra praktisk kryss, velg student_id fra student;

Vi har endret spørringen ovenfor der kryssfunksjonen brukes på det praktiske og studentbordet.

Etter å ha brukt spørringen, kjør den ved å velge alternativet. Du vil se at alle vanlige ID -er hentes fra begge de spesifiserte tabellene i kommandoen.

Konklusjon

Artikkelen 'Postgres krysser kommandoen' beskriver arbeidet til denne operatøren i PostgreSQL -databasesystemet. Noen elementære eksempler brukes her for å beskrive dets arbeid i detalj. Hver vanlige data kan enkelt hentes ved å bruke denne kryssfunksjonen i kommandoene for å unngå redundans og kobling av data i en database.