..
Cine ştie ce cunoştinţe de SQL este JOIN. În ghidurile noastre şi alte articole am explicat cum se alăture şi modul în care puteţi să creaţi relaţii între tabele diferite într-o bază de date.
Cerinţa cea mai comună este îndeplinită de către instrumentul JOIN pentru a găsi meciuri între două tabele, caz în care salvează INNER JOIN clauză care localizează cu precizie şi returnează câmpurile care îndeplinesc Corespondenta solicitat în termen de două sau mai multe tabele implicate în JOIN.
Mult mai puţin intuitiv contrară este necesitatea de a identifica domeniile care nu au un meci în cadrul JOIN.
Să luăm un exemplu.
Să presupunem că doriţi să gestioneze o bază de date a unui e-commerce este format din doar două tabele:
Pentru a satisface cerinţa în primul rând, desigur, este destul de simplu:
SELECT CUSTOMER.FIRST, CUSTOMER.LAST De la clienţi Obligă INNER JOIN ON = clienti.id ordini.id_cliente ORDER BY ASC CUSTOMER.LASTşi până în prezent nici o problema.
Dar cum putem face pentru a inversa rezultatul?
Ei bine ...
În primul rând, nu utilizaţi un INNER JOIN, dar o LEFT JOIN pentru a găsi un meci depline, dar nu parţială, în cazul în care, cu toate acestea, rezultatele din tabelul din stânga sunt returnate oricum.
Fără acest lucru ne vom uita (folosind clauza WHERE) înregistrările lipsesc (de exemplu, nu a fost găsit în raport), apoi identificate ca fiind NULL (NULL în SQL este definit ca un fel de "valoare deosebita", care identifică o lipsa de valoare ..)
Să vedem codul:
SELECT CUSTOMER.FIRST, CUSTOMER.LAST De la clienţi LEFT JOIN Obligă ON = clienti.id ordini.id_cliente UNDE ESTE NULL ordini.id_cliente ORDER BY ASC CUSTOMER.LASTRezultatul este, de fapt, lista de nume ale clienţilor noştri, care nu au cumpărat nimic.
| |
MS Access (Avansat)
Aflaţi cum să creaţi şi să gestionaţi baze de date rapid şi uşor. Incepand de la 29 €. |
| |
MySQL (Curs)
De gestionare a bazei de date open-source. De la 39 €. |
| |
SQL si baze de date (Curs)
Crearea şi gestionarea bazelor de date relaţionale. De la 39 €. |