SQL underforespørgsler og Join

Slides:



Advertisements
Lignende præsentationer
Den danske befolknings syn på handicappedes rettigheder
Advertisements

VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Atomer Et programmeret forløb. En måde at lære på.
Funktioner Grundbegreber.
Hjemmesidekonstruktion Tjekspørgsmål 1.Hvad er et markup-sprog – hvad bruges det til? 2.Hvad er forskellen mellem et markup-sprog og et scriptsprog? 3.Hvad.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
SQL introduktion og basis
v/ Professor Lars Ehlers, Aalborg Universitet
1 DSB og Bibliotekerne Personlige interview foretaget 20. til 25. januar respondenter Holdning til evt. ny portal.
Formularer (Access, del 3)
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Trivselsundersøgelse og ledelsesevaluering
av Lajla Ellingsen og Mari By Rise Adresseavisen
SQL 1 DDL og DML.
TS-diagrammer (databaser, del 5)
Felter og nøgle-felter (databaser, del 6)
SQL sortering og gruppering. RHS – IT A 2 SQL - sortering Hvis en forespørgsel returnerer mange rækker, kan det være bekvemt at sortere resultatet SQL.
PROGRAM Introduktion til internettet Hvad er en PC? Musetræning
SEO PÅ AU.
Efteruddannelsesindsatsen 2007 Analyse Danmarks undersøgelse januar 2008 Oplæg på Kompetencerådets møde den v./ Merete.
1 Effektiv forrentning Kjeld Tyllesen PEØ, CBS Erhvervsøkonomi / Managerial Economics Kjeld Tyllesen, PEØ, CBS.
Naboskabet - en undersøgelse af 3 boligområder 473 beboere besvarede undersøgelsen 6-11 år: år: år: 4 Voksne: 454.
Arbejdsmarkedsuddannelser – også for personer med læse-, skrive- og regnevanskeligheder Oplæg fra AMU-Fyn Konference d. 22/5 -07.
Representations for Path Finding in Planar Environments.
DCS/DTS fællesmøde januar 2010 Denne præsentation har været fremlagt ved DCS / DTS Fællesmøde 2010 og Poul Erik Mortensen har alle rettighederne til gengivelse.
Introduktion til Access (Access, del 1)
Validering af data (Access, del 7)
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Oprettelse af tabeller (Access, del 2)
Rapporter (Access, del 5)
HUSKESPIL – den lille tabel
Naboskabet - en undersøgelse af det sociale liv i Skovengen Skovengen.
Titel: Arial, fed, skriftstr. 20, mørkegrå. Tekst: Arial, normal, fed eller kursiv, skriftstr. 10, 12 og 14 til print – 16 og 18 til projektor – mørkegrå.
Relativ vigtighed for elektroniske ressourcer,24,22,20,18,16,14,12,10 Indeks FARM nem at bruge Info om anvendelse af elektroniske.
 2 3  3 =  83  43  53  63  73  93  10 4.
Signifikanstest ved (en eller) to stikprøver
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Trivselsundersøgelse og ledelsesevaluering Anæstesiologisk Afdeling Flere ledere
Et vejledningsværktøj KOT Ansøgningsflow. Forsiden af Optagelse.dk 2.
Operationer på relationer
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
Opgave 2 24 Opgave 23 Opgave 22 Opgave 21 Opgave 20 Opgave 19 Opgave 18 Opgave 17 Opgave 16 Opgave 15 Opgave 14 Opgave 13 Opgave 12 Opgave Opgave.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 7. april 2003.
1 Borgerpanelet i Silkeborg Kommune.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
1 SQL2. 2 Funktioner der laver aggregerede beregninger Returnerer count() Antal rækker der opfylder bestemt betingelse min() Laveste værdi (eller null)
Normalisering (databaser, del 8)
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
Matematik B 1.
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
SQL Jesper Tørresø DAB1 E oktober Punkter for i dag. SQL baggrund. Relationel algebra. Brug af VS2005.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
1 USB Gennemgang af installering af USB driver til ICT. Er fortaget på Windows XP.
Grunde til at jeg elsker dig
1 SQL2. 2 Funktioner der laver aggregerede beregninger Returnerer count() Antal rækker der opfylder bestemt betingelse min() Laveste værdi (eller null)
Fundamentale datastrukturer
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
Introduktion til Access (Access, del 1). RHS – Informationsteknologi – Fra design til udvikling Vi ved nu, hvordan vi finder et design for en database,
Slide Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization.
10.mar. 15 Udvikling i løn, priser og konkurrenceevne Dansk Industri.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation og dataproblemer 2. november 2004.
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
Oprettelse af tabeller (Access, del 2)
SQL – Oracle Vigtige SQL sætninger Lektion 6 7. Semester.
Globaliseringsredegørelse 21.mar. 11 Globaliseringsredegørelsen 2011 Grafer fra temakapitlet Eksporten som drivkraft for vækst og velstand.
Database.
VTU 2008 | Virksomhedstilfredshedsundersøgelse Aalborg Tekniske Skole Svarprocent: 27% (414 besvarelser ud af mulige)
Præsentationens transcript:

SQL underforespørgsler og Join

SQL – flere tabeller Indtil nu har vi kun anvendt forespørgsler på en enkelt tabel Vi er ofte interesserede i at lave fore-spørgsler, der involverer flere tabeller Vi kan dermed besvare mere komplekse spørgsmål, men forespørgslerne selv bliver også mere komplekse… RHS – IT A

SQL – flere tabeller Vi benytter en database med information om film som eksempel Film filmid titel land år genre oscars Skuespiller personid navn land født levende oscars Medvirker filmid personid RHS – IT A

SQL – flere tabeller filmid titel land år genre oscars 1 E.T. USA 1982 Sci-Fi 4 2 Taxi Frankrig 1998 Komedie 3 Sult Danmark 1966 Drama Leon 1994 Thriller 5 Hard Boiled Kina 1992 Action 6 1984 UK 7 Seven 1995 RHS – IT A

SQL – flere tabeller personid navn land født levende oscars 1 John Wayne USA 04-06-1911 nej 2 Chow-Yun Fat Kina 12-11-1959 ja 3 Karl Stegger Danmark 30-01-1922 4 Jean Reno Frankrig 10-10-1949 5 Julia Roberts 28-09-1964 6 Natalie Portman Israel 02-07-1980 7 Marc Duret 01-08-1966 RHS – IT A

SQL – flere tabeller filmid personid 1 4 5 7 2 6 3 filmid personid 4 6 RHS – IT A

SQL – flere tabeller Hvordan kan vi svare på et spørgsmål som dette: Hvor mange film er lavet i det land som Marc Duret kommer fra? Dette spørgsmål kan ikke besvares med en forespørgsel, der kun berører én tabel Informationen er spredt ud i flere tabeller RHS – IT A

SQL – flere tabeller SELECT land FROM Skuespiller WHERE navn = ’Marc Duret’ SELECT COUNT(titel) AS filmCount FROM Film WHERE Film.land = ’Frankrig’ Resultat er ’Frankrig’ ’Frankrig’ brugt som input NB! RHS – IT A

SQL – flere tabeller Vi kan udføre den første forespørgsel, og bruge resultatet fra den som ”input” til den anden forespørgsel Den første forespørgsel bliver til en ”under-forespørgsel” RHS – IT A

SQL – flere tabeller Ydre forespørgsel SELECT COUNT(titel) AS filmCount FROM Film WHERE land = (SELECT land FROM Skuespiller WHERE navn = ’Marc Duret’) Ydre forespørgsel Indre forespørgsel (under-forespørgsel) RHS – IT A

SQL – flere tabeller Resultat fra indre forespørgsel bruges som input til ydre forespørgsel Den indre forespørgsel producerer – som alle andre forespørgsler – en resultattabel, som bruges af den ydre forespørgsel Giver et par komplikationer Navnesammenfald Mulighed for mere end et resultat RHS – IT A

SQL – flere tabeller Når en forespørgsel involverer flere tabeller, kan der være felter med samme navn i tabellerne Vi kan præcisere et feltnavn ved at skrive tabelnavnet foran (med et .) Film.land (land feltet i Film tabellen) Skuespiller.land (land feltet i Skuespiller tabellen) RHS – IT A

SQL – flere tabeller Hvad nu hvis en under-forespørgsel giver mere end ét resultat? SELECT land FROM Skuespiller WHERE (oscars > 0) Resultat: USA Frankrig RHS – IT A

SQL – flere tabeller Vi må i så fald bruge IN SELECT COUNT(titel) AS FilmCount FROM Film WHERE land IN (SELECT land FROM Skuespiller WHERE (oscars > 0)) Øhmm… RHS – IT A

Opgave 6 – SQL Brug Filminformation-databasen fra websiten Kør nedenstående SQL-forespørgsler på databasen SELECT titel, år, oscars FROM Film WHERE oscars > (SELECT SUM(oscars)/5 FROM Film) SELECT * FROM Film WHERE år > (SELECT MAX(år) FROM Film WHERE (oscars > 0)) Formulér selv SQL-forespørgsler til at finde nedenstående data : Find navn og land for skuespillere fra samme land som ’E.T’ er fra Find titel og Oscars for film som har vundet mindst lige så mange Oscars som John Wayne har vundet Find navn og land for skuespillere som har vundet mindst dobbelt så mange Oscars som gennemsnittet af Oscars vundet af alle skuespillere RHS – IT A

SQL – Join En anden tilgangsvinkel til spørgsmål som involverer flere tabeller er join (forening) At ”joine” tabeller er en slags ”multiplika-tion” af tabeller Simpelt tilfælde: Join uden betingelser: SELECT * FROM Film, Skuespiller RHS – IT A

SQL – Join Kører vi denne forespørgsel, får vi et resultat på 49 poster… 49 = 7 x 7. Alle kombinationer af Film poster (7) og Skuespiller poster (7) Alle felter fra begge tabeller er inkluderet Som regel er det ikke lige det resultat vi ønsker os… RHS – IT A

SQL – Join Som regel vil vi gerne udvælge resultater hvor visse felters værdier matcher Eksempel: For alle film, find filmens titel samt navne på alle skuespillere som medvirker i den enkelte film Denne information findes jo allerede i Medvirker tabellen (20 poster), men kun i form af talpar (filmid + personid) RHS – IT A

SQL – Join Vi har brug for information fra alle tre tabeller i databasen, så et første forsøg på en forespørgsel kunne være SELECT * FROM Film, Medvirker, Skuespiller Resultat: 980 poster med mange felter… RHS – IT A

SQL – Join Vi kan imidlertid nøjes med kun at medtage nogle få felter fra tabellerne: SELECT Film.titel, Skuespiller.navn FROM Film, Medvirker, Skuespiller Resultat: 980 poster med de ønskede felter RHS – IT A

SQL – Join Desuden skal vi kun bruge de poster, hvor den relevante information matcher Vi prøver at ”udskifte” tallene i Medvirker tabellen med rigtigt data (titler og navne) For at udvælge korrekte titler og personer, skal de tilsvarende id’er (filmid og person-id) matche på tværs af tabellerne RHS – IT A

SQL – Join Match id’er for titler og personer: SELECT Film.titel, Skuespiller.navn FROM Film, Medvirker, Skuespiller WHERE ((Film.filmid = Medvirker.filmid) AND (Skuespiller.personid = Medvirker.personid)) Resultat: 20 poster med de rigtige felter! RHS – IT A

SQL – Join Dette er et meget normalt ”mønster” for multi-tabel forespørgsler Tabeller der repræsenterer relationer inde-holder kun id’er (nøgler i andre tabeller) ”Rigtigt data” findes i tabeller som repræsen-terer entiteter (med id’er som nøgle) ”Rigtigt data” for relationer findes ved brug af join, hvor der matches på nøglefelter RHS – IT A

Opgave 7 – SQL Brug Filminformation-databasen fra websiten Kør nedenstående SQL-forespørgsler på databasen 1) SELECT Film.titel, COUNT(Skuespiller.personid) AS Roller FROM Film, Skuespiller, Medvirker WHERE (Skuespiller.land = 'Frankrig') AND (Medvirker.personid = Skuespiller.personid) AND (Medvirker.filmid = Film.filmid) GROUP BY Film.titel 2) SELECT Film.Genre, SUM(Skuespiller.Oscars) AS totalOscars FROM Film, Skuespiller, Medvirker WHERE (Skuespiller.levende = true) AND (Medvirker.personid = Skuespiller.personid) AND (Medvirker.filmid = Film.filmid) GROUP BY Film.genre Formulér selv SQL-forespørgsler til at finde nedenstående data: Find navn, land og film-titel for skuespillere (og film) som medvirker i film fra deres eget land Find navn og film-titel for for skuespillere (og film) som ikke har vundet en Oscar, men har medvirket i en film, som har vundet en Oscar RHS – IT A