Artiklar » SQL » Inner, Left och Right joins

 
 

Inner, Left och Right joins

Författare: Pochen
Datum: den 19 maj 2007
Antal lästa: 3871
Ej stjärnmärkt

I många fall behöver man hämta ut data från fler än en tabell vid hämtning av data. Hur gör man då?

Om man har fält i vardera tabell som står reffererar till varandra som tex i ett community där du har en gästbok eller liknande.

Users:

userName - userID
Björn -1
Mikael - 2
Niklas - 3



guestbook:

ref_ToID - ref_FromID - gbMsg
1 - 2 - Tjenare, kungen här
2 - 1 - Lorem ipsum!
2 - 1 - Ipsum vadå?
2 - 1 - Ipsum ASP
1 - 2 - Tove är kär i dig
1 - 5 - Jag finns inte



I detta fallet är jag inloggad som mig själv (Björn) och vet att jag har id 1 så vill jag hämta ut all data där det har skickats till mig.
Märkt även att jag använder alias på mina tabeller för att förenkla min SQLquery.

Inner Join

SELECT u.userName, g.gbMsg FROM guestbook g
INNER JOIN users u ON g.ref_FromID = u.userID
WHERE g.ref_ToID = 1



Resultat

u.UserName - g.gbMsg
Mikael - Tjenare, kungen här
Mikael - Tove är kär i dig



Det som hände var att den kopplade ihop tabellen guestbook med users där userID stämde överrens med ID't på den som skickade inlägget.

Left Join:
Left join fungerar på samma sätt som inner join strukturmässigt i queryn men resultatet blir annorlunda. Den returnerar nämligen alla poster från första valda tabellen (guestbook i exemplet ovanför) dvs den hämtar alla gästboksinlägg även om där inte finns någon avsändare som stämmer överens.


SELECT u.userName, g.gbMsg FROM guestbook g
LFET JOIN users u ON g.ref_FromID = u.userID
WHERE g.ref_ToID = 1



Resultat:

u.UserName - g.gbMsg
Mikael - Tjenare, kungen här
Mikael - Tove är kär i dig
- Jag finns inte




Right Join
Right join returnerar alla poster från andra tabellen (users i exemplet ovan) även om det inte finns motsvarande post i första tabellen (guestbook)


SELECT u.userName, g.gbMsg FROM guestbook g
RIGHT JOIN users u ON g.ref_FromID = u.userID
WHERE g.ref_ToID = 1



Resultat:

u.UserName - g.gbMsg
Björn - Tjenare, kungen här
Mikael - Lorem ipsum!
Mikael - 1 - Ipsum vadå?
Mikael - Ipsum ASP
Björn - Tove är kär i dig
Niklas -






Fler artiklar om SQL kommer vid senare skede. PM:a gärna om ni hittar något slarvfel
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,0625 sekunder att ladda sidan