Syntaks
Velg kolonne_name1, kolonne_name2 fra tabell1Dette 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
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 (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 (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' );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 krysserDet 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 krysserEksempel 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 kryssFra 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 kryssEksempel 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.