..


Sponsrade länkar

Motsatsen till en INNER JOIN eller för att få posterna matchar inte

Artikel skriven av Max Bossi

Vem vet vad kunskaper om SQL är kopplingen. I våra guider och andra artiklar vi förklarade hur JOIN och hur du kan skapa relationer mellan olika tabeller i en databas.

Det vanligaste kravet är nöjd med instrumentet JOIN för att hitta matcher mellan två tabeller, i vilket fall hjälper INNER JOIN klausul som exakt lokaliserar och returnerar fält som uppfyller korrespondens sökas inom två eller flera inblandade tabeller i JOIN.

Mycket mindre intuitivt är behovet av att identifiera de områden som annars inte har en match i JOIN.

Låt oss ta ett exempel.
Anta att du har att hantera en databas med en e-handel består av endast två tabeller:

  • kunder (som innehåller master data av kunder)
  • order (med beställningar från kunder)
Antag nu att du vill extrahera två olika listor över kunder: 1) en förteckning över kunder som redan har beställt, 2) Den förteckning över kunder som ännu inte har köpt något.

För att tillgodose det första kravet, naturligtvis, är ganska enkel:

 



 VÄLJ CUSTOMER.FIRST, CUSTOMER.LAST







 FROM kunder







 INNER JOIN Orders







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
och hittills inga problem.

Men hur kan vi göra för att vända på resultatet? Tja ... Först bör du inte använda en LEFT JOIN, INNER JOIN, men i syfte att nå en match inte är full, men partiell, där dock resultat från den vänstra tabellen tillbaka ändå.
Utan detta kommer vi att söka efter (med hjälp av WHERE-sats) saknas register (dvs inte finns i rapporten) och sedan identifieras som NULL (i SQL NULL definieras som ett slags "särskilt värde" som identifierar en avsaknad av värde ..)

Låt oss se koden:

 



 VÄLJ CUSTOMER.FIRST, CUSTOMER.LAST







 FROM kunder







 LEFT JOIN Orders







 ON = clienti.id ordini.id_cliente







 VAR ÄR NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
Resultatet är i själva verket en lista med namn på kunder som har aldrig köpt något.

I samma kategori ...
E-lärande
MS Access (Kurs) MS Access (Kurs)
Lär dig skapa och hantera databaser enkelt och snabbt. Från 29 €.
MySQL (Kurs) MySQL (Kurs)
Hantering av öppen källkod databas. Från 39 €.
SQL och databas (kurs) SQL och databas (kurs)
Skapa och hantera relationsdatabaser. Från 39 €.
Sponsrade länkar