Difference between revisions of "6238 Databaser Agenda/SQL JoinOrderGroup"

From Teknologisk videncenter
Jump to: navigation, search
(6238 Databaser Agenda SQL JoinOrderGroup)
(SUB Query)
Line 14: Line 14:
  
 
==SUB Query==
 
==SUB Query==
Med subquery kan du neste flere select sætninger inde I hinanden.
+
Et sub query kan anvendes hvis vi skal samle data fra flere tabeller.
 +
I eksemplet er Saelger og TelefonNr splittet i 2, men hvad hvis vi gerne vil vide hvilken sælger der har et bestemt telefon nr.
 +
 
 
Her findes navnet på den sæger som har telefon nr 45653465
 
Her findes navnet på den sæger som har telefon nr 45653465
 
<source lang=sql>
 
<source lang=sql>
Line 20: Line 22:
 
(SELECT Saelger FROM TelefonNr WHERE Nr = '45653465');
 
(SELECT Saelger FROM TelefonNr WHERE Nr = '45653465');
 
</source>
 
</source>
 +
 +
Den SELECT sætning der er inde i parantesen finder nummeret på medarbejderen og det bruger vi efterfølgende til at finde Navn på medarbejderen.
  
 
==Join==
 
==Join==

Revision as of 08:14, 27 October 2015

6238 Databaser Agenda SQL JoinOrderGroup

Fra 6238_Databaser_Agenda/SQLCreateInsertSelect har vi lavet tabeller til viste database.

Du har også set hvordan man med en SELECT sætning kan trække data ud af databasen.

6238 Databaser Agenda SQLCreateInsertSelect2.png

6238 Databaser Agenda SQLCreateInsertSelect5.png 6238 Databaser Agenda SQLCreateInsertSelect7.png

6238 Databaser Agenda SQLCreateInsertSelect4.png 6238 Databaser Agenda SQLCreateInsertSelect3.png 6238 Databaser Agenda SQLCreateInsertSelect6.png

SUB Query

Et sub query kan anvendes hvis vi skal samle data fra flere tabeller. I eksemplet er Saelger og TelefonNr splittet i 2, men hvad hvis vi gerne vil vide hvilken sælger der har et bestemt telefon nr.

Her findes navnet på den sæger som har telefon nr 45653465

SELECT Navn FROM Saelger WHERE MedarbNr IN
(SELECT Saelger FROM TelefonNr WHERE Nr = '45653465');

Den SELECT sætning der er inde i parantesen finder nummeret på medarbejderen og det bruger vi efterfølgende til at finde Navn på medarbejderen.

Join

Med JOIN kan man lave forbindelse mellem to forskellige tabeller. /* Vælg alt fra Saelger JOIN TelefonNr på Medarbejder nr */ SELECT * FROM Saelger JOIN TelefonNr ON TelefonNr.Saelger = Saelger.MedarbNr;

Bemærk ‘Alias’ Saelger,RegistreringNr og Telefon der ændre navnet på output /* Vælg Saelger,RegistreringsNr, TelefonNr fra JOIN af Saelger, TelefonNr og Bil */ SELECT Saelger.Navn AS Saelger, Bil.RegNr AS RegistreringsNr, TelefonNr.Nr AS Telefon FROM Saelger JOIN TelefonNr ON TelefonNr.Saelger = Saelger.MedarbNr JOIN Bil ON Bil.Saelger = Saelger.MedarbNr;

Order

Med Order kan man sorterer på de data som selectes /* Vælg alt fra Kunde JOIN Saelger hvor sælger er startet før 2003. Sorter på Kunde.Navn */ SELECT * FROM Kunde JOIN Saelger ON Kunde.Saelger = Saelger.MedarbNr WHERE Saelger.StartDato < '20030101' ORDER BY Kunde.Navn;

Group by

/* Tæl alle records gruperet på Saelger sorteret på saelger navn */ SELECT Saelger.Navn, COUNT(*) AS Kunder FROM Kunde JOIN Saelger ON Kunde.Saelger = Saelger.MedarbNr GROUP BY Saelger.Navn ORDER BY Saelger.Navn;

Having

/* Tæl alle records gruperet på Saelger sorteret på saelger navn men udskriv kun de som er større en 4*/ SELECT Saelger.Navn, COUNT(*) AS Kunder FROM Kunde JOIN Saelger ON Kunde.Saelger = Saelger.MedarbNr GROUP BY Saelger.Navn HAVING COUNT(*) > 4 ORDER BY Saelger.Navn;

Logical querry processing

6238 Databaser Agenda SQL JoinOrderGroup1.png

6238 Databaser Agenda SQL JoinOrderGroup2.gif