Limba de interogare 1c 8

Autentificare ca un student pentru a avea acces la școală

Query Language 1C 8.3 pentru incepatori: Conexiune

Compușii din interogări

Conexiune - una dintre cele mai importante și necesare operațiunilor efectuate de către sistemele de gestionare a bazei de date relaționale.







Compușii sunt utilizați pentru a compara șirul audio al rândului de masă într-un alt tabel.

să rezolve următoarea problemă pentru a realiza necesitatea de conexiuni.

Avem o bază de clienți de referință este:

Limba de interogare 1c 8

Limba de interogare 1c 8

Și Asociația de referință:

Limba de interogare 1c 8

Sarcina noastră este de a aduce clienții dumneavoastră de asociere preferate, în funcție de culoare.

Astfel, pentru Natasha Asociația iubit este iarbă, ca și culoarea ei preferată este verde. Iar pentru Petru - soarele. Privesti versiunea de evaluare lecție, lecții complete sunt disponibile aici.

Pentru că Andrew nu există nici o asociere corespunzătoare, după cum culoarea lui preferată este roșu, iar asociațiile de culoare roșie pe bază de acolo.

Vom rezolva problema treptat.

În primul rând, nevoile tuturor clienților și culorile lor preferate:

Acum, noi cumva ar trebui să combine primul și al doilea tabel. Pentru a face acest lucru, să solicite informații din două tabele. Pentru această listă cele două tabele din secțiunea FROM, separate prin virgulă. Privesti versiunea de evaluare lecție, lecții complete sunt disponibile aici. O secțiune indicăm câmpurile selectare din ambele tabele:

Dacă încercăm să-și îndeplinească această solicitare, primiți o eroare:

Limba de interogare 1c 8

Motivul erorii este faptul că câmpul Nume este prezent imediat în ambele tabele (clienți și asociații) și sistemul pur și simplu nu știe exact care câmpul din tabel se înțelege.

Pentru a elimina astfel de ambiguitate într-un eșantion de mai mult de un tabel luate pentru a indica câmpuri numele complete. câmp Numele complet include numele complet calificat de masă (de exemplu, Spravochnik.Klienty) și numele câmpului (de exemplu, nume).

Astfel, numele complet al numelui de câmp din tabelul de clienți va Spravochnik.Klienty.Naimenovanie.

Un complet numele câmpului Numele Asociației tabelului va Spravochnik.Assotsiatsii.Naimenovanie.

legătura încrucișată

Rescrie interogarea anterioară cu numele complete ale câmpurilor:

Limba de interogare 1c 8

Am făcut doar o conexiune transversală între două mese. Fiți atenți la modul în care a fost generat rezultatul:

Limba de interogare 1c 8

conexiune internă

Este evident că rezultatul transversale se conectează cele două tabele nu este soluția la problema noastră. Nu avem nevoie de toate înregistrările ale crosser, ci numai acelea în care LyubimyyTsvet câmp și culoarea au aceeași valoare:

Limba de interogare 1c 8

Pentru a obține aceste înregistrări adaugă la o secțiune solicitare anterioară, în care:

Limba de interogare 1c 8

Aceasta este ceea ce ai nevoie - am decis sarcina!

În acest din urmă cerere, am folosit legătura încrucișată cu condiția suplimentară (în secțiunea de unde). Privesti versiunea de evaluare lecție, lecții complete sunt disponibile aici. Un astfel de compus este numit interior.







Există o altă ortografie aceeași conexiune internă:

Comparați acest lucru și interogarea anterioară. Acestea sunt exact la fel în ceea ce privește platforma, au doar o sintaxă diferită. Și acest lucru și solicitările anterioare conțin un interior se alăture masa clientului cu tabelul Asociației câmpurilor LyubimyyTsvet și, respectiv, culoarea.

stânga se alăture

Acordați atenție faptului că a ratat Andrew în rezultatul conexiunii interne. Și toate pentru că culoarea lui preferată este roșu, iar roșii asociații în baza noastră de date nu este deloc.

Se pare că Andrew cu roșu său pur și simplu nu a putut găsi o pereche de tabele de dimensiuni.

Rescrie cerere, astfel încât să rezulte o scădere a numărului de înregistrări din primul tabel pentru care nu a fost o pereche de al doilea tabel (în acest caz, Andrew):

Limba de interogare 1c 8

Un astfel de compus este numit conexiunea stânga.

stânga Performan este un compus: toate înregistrările de la conexiunea internă plus toate înregistrările din primul tabel. nu se încadrează în compusul interior (pentru care nu a existat nici perechi).

Limba de interogare 1c 8

Conexiunea dreapta

Dar să ne întoarcem din nou la conexiunile interne:

Rețineți că rezultatul conexiunii interne nu conține o asociere de zăpadă albă, deoarece nu a existat un singur client, care are o culoare preferata ar fi de culoare albă.

Rescrie cerere, astfel încât să rezulte o scădere a numărului de înregistrări din al doilea tabel, care nu a fost găsit nici o pereche de prime mese (în acest caz, zăpadă alb):

Limba de interogare 1c 8

Un astfel de compus este numit o conexiune dreapta.

Rezultatul dreapta reprezintă compusul: toate înregistrările de la conexiunea internă plus toate intrările din al doilea tabel. nu se încadrează în compusul interior (pentru care nu a existat nici perechi).

Limba de interogare 1c 8

compus plin

Ce se întâmplă dacă avem nevoie în rezultatul interogării sa destrămat interior se alăture Andrew și zăpadă, în același timp?

Acest lucru va necesita rezultatele combinate ale stânga și conexiunile dreapta. Acest tip de compus a inventat deja și numit compus complet:

Limba de interogare 1c 8

Rezultatul unui compus complet constă dintr-o: toate înregistrările de la conexiunea internă plus toate înregistrările din primul tabel, nu se încadrează în compusul interior (pentru care nu a fost nici o pereche), plus toate intrările din al doilea tabel, nu se încadrează în compusul interior (pentru care nu a existat nici o pereche) .

Limba de interogare 1c 8

pseudonime de masă

Sunteți de acord că toate cererile pe care am scris despre în această lecție sunt destul de voluminoase. Acest lucru se datorează faptului că trebuie să specifice numele complete ale câmpurilor pentru a evita ambiguitatea.

Pentru a reduce ortografia completă a numelui de masă (de exemplu, Spravochnik.Klienty) este permisă (ca și pentru domeniile ele însele) folosesc pseudonime.

Să rescrie ultima solicitare, astfel încât formarea numelor de câmpuri complete în loc Spravochnik.Klienty ar putea folosi un pseudonim în loc K. Spravochnik.Assotsiatsii - alias A:

Și pentru rezultatul de interogare a fost chiar și mai clar adăuga pseudonime domenii pe care le-am considerat deja unul dintre lecțiile trecutului:

Manipularea NULL

Priviți cu atenție la rezultatele ultimei interogare (precum și multe mai devreme în această lecție).

Care sunt valorile câmpurilor și Asociația EoTsvet pentru primul loc? Ce se poate spune despre Client câmpurile și EgoTsvet pentru ultima linie?

Ele sunt NULL, care, după cum știm înseamnă absența oricăror valori:

Și, din moment ce NULL înseamnă absența valorilor, orice încercare de a-l executa orice operațiune (comparație, plus.) Va determina baza de date cu un comportament nedefinit, erori imprevizibile.

Prin urmare, tratamentul obligatoriu este considerat valori NULL ori de câte ori acestea pot apărea.

Sub tratament însemna că trebuie să spunem la solicitarea noastră, că, dacă unul dintre domeniile va fi egal cu NULL. în acest domeniu ar trebui să înlocuiască o altă valoare.

În acest caz, câmpurile client și asociere în caz de NULL, vom înlocui șir gol „“.

Pentru a determina dacă câmpul a fost NULL va folosi deja familiar pentru noi din funcția anterioară lecții ESTNULL:

Pe suprafața (a consolei cereri), rezultatul nu a schimbat. Continuăm să vedem câmpuri goale. Dar aceasta este numai pentru că reprezentările șir în NULL și câmpurile goale de toate tipurile sunt la fel și egal la un șir gol.

De fapt, aceste câmpuri goale nu au un NULL (nici o valoare), acum au primit valoare (martor), cu care este deja posibil să se opereze (efectua operațiuni).

Notați valoarea martor și lipsa de valoare - sunt două mari diferențe.

Compus mai mult de două tabele

Poate fi conectat în serie cât mai multe mese.

Să presupunem că aveți nevoie pentru a rezolva următoarea problemă. Privesti versiunea de evaluare lecție, lecții complete sunt disponibile aici. Retrage toți clienții posibili și asociațiile lor cei dragi și alimentele lor preferate, bazate pe culoarea lor preferată.

În acest scop, conectat în serie prin culoarea mesei de client la tabelele de dimensiuni. și apoi (rezultatul obținut) din tabelul alimentar: