SQL JOIN tabeller

SELECT * 
FROM tabell1 
JOIN tabell2 
ON(tabell1.nyckel=tabell2.primärNyckel);

Här följer ett exempel då vi vill ta ut Namn och lön för anställda från två tabeller, den ena innehållandes lönen och den andra namnet. Vi kopplar dessa två tabeller med JOIN på det gemensama värdet AnställningsNr.

InfoTabell
AnstallningsNr Arbetstitel Lön
155 VD 5000000
734 vice VD 1500000
1241 Chefsutvecklare 1000000
6346 Webbutvecklare 300000
6621 Webbdesigner 230000
2423 Grafisk designer 300000
1553 Marknadschef 1200000
2352 Webbdesigner 240000
NamnTabell
Namn AnstallningsNr
Anders Brant 155
Helena Silver 734
David Svensson 1241
Göran Brysk 6346
Gorban Itjofv 6621
Pontus Lamber 2423
Silvio van Pao 1553
Lovisa Andersson 2352

Vi använder oss av SQL satsen:

SELECT NamnTabell.Namn, InfoTabell.Lon 
FROM InfoTabell 
JOIN NamnTabell.Namn 
ON(InfoTabell.AnstallningsNr=NamnTabell.AnstallningsNr)
Resultat tabell
Namn Lon
Anders Brant 5000000
Helena Silver 1500000
David Svensson 1000000
Göran Brysk 300000
Gorban Itjofv 230000
Pontus Lamber 300000
Silvio van Pao 1200000
Lovisa Andersson 240000


SQL Left Join

SELECT * 
FROM tabell1 
LEFT JOIN tabell2 
ON(tabell1.nyckel=tabell2.primärNyckel);

I detta exempel skall vi ta fram Namnet på alla anställda som ej varit sjukskrivna någon dag under 2006. Vi kopplar tabellerna med anställnings nummret och väljer ut de där det inte finns någon matchning i sjukskrivningstabellen.

NamnTabell
Namn AnstallningsNr
Anders Brant 155
Helena Silver 734
David Svensson 1241
Göran Brysk 6346
Gorban Itjofv 6621
Pontus Lamber 2423
Silvio van Pao 1553
Lovisa Andersson 2352
SjukDagar2006
AnstallningsNr Dagar
Anders Brant 12
Göran Brysk 51
Gorban Itjofv 2
Lovisa Andersson 89

Vi använder oss av SQL satsen:

SELECT NamnTabell.Namn 
FROM NamnTabell 
LEFT JOIN SjukDagar2006
ON(NamnTabell.AnstallningsNr=SjukDagar2006.AnstallningsNr)
GROUP BY Namn
HAVING SjukDagar2006.Dagar IS NULL
Resultat tabell
Namn
Helena Silver
David Svensson
Pontus Lamber
Silvio van Pao


SQL Right Join

SELECT * 
FROM tabell1 
RIGHT JOIN tabell2 
ON(tabell1.nyckel=tabell2.primärNyckel);

Nu vill vi göra något lite mer avancerat, ta ut mängden förlorad lön för varje arbetarare, vi räknar med 0kr lön för sjukdagar och att det går 300 arbetsdagar på ett år. Vi använder alltså årslön delat med 300 gånger antalet sjukdagar, vi vill presentera detta bredvid Namnen på personerna.

InfoTabell
AnstallningsNr Arbetstitel Lön
155 VD 5000000
734 vice VD 1500000
1241 Chefsutvecklare 1000000
6346 Webbutvecklare 300000
6621 Webbdesigner 230000
2423 Grafisk designer 300000
1553 Marknadschef 1200000
2352 Webbdesigner 240000
NamnTabell
Namn AnstallningsNr
Anders Brant 155
Helena Silver 734
David Svensson 1241
Göran Brysk 6346
Gorban Itjofv 6621
Pontus Lamber 2423
Silvio van Pao 1553
Lovisa Andersson 2352
SjukDagar2006
AnstallningsNr Dagar
Anders Brant 12
Göran Brysk 51
Gorban Itjofv 2
Lovisa Andersson 89

Vi använder oss av SQL satsen:

SELECT NamnTabell.Namn, (InfoTabell.Lon/300*SjukDagar2006.Dagar) as ForloradLon 
FROM InfoTabell 
RIGHT JOIN SjukDagar2006 
ON(SjukDagar2006.AnstallningsNr=InfoTabell.AnstallningsNr) 
LEFT JOIN NamnTabell 
ON(NamnTabell.AnstallningsNr=InfoTabell.AnstallningsNr) 
GROUP BY Namn 
ORDER BY ForloradLon DESC
Resultat tabell
Namn ForloradLon
Anders Brant 200000
Lovisa Andersson 71200
Göran Brysk 51000
Gorban Itjofv 1533,333



kommenteraKommentarer    Antal 0    Medelpoäng 0/10

Bli medlem för att kunna skriva kommentarer!
Logga in om du redan är medlem.


Copyright © 2005 webbdesign.info    Cookies    Gratis statistik till hemsida    sitemap Webbdesign sitemap icon
Använd gärna våra RSS feeds:

Artikel Feed
[XML]
Forum Feed
[XML]

Svenska webhosts:
Svenska Webhotell

Använd gärna denna länk för att länka till oss:

Ny översättning:
Swedish affiliate programs

Är du medlem och vill synas här?
Hör av dig i vårt forum