SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program



Like dokumenter
En liten rekap. Spørrespråk. I dag SELECT

Dagens program. Kunnskapsorganisasjon og gjenfinning 1. Spørring mot databaser: SQL 2 - Spørring mot flere tabeller

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Tabeller og enkle spørringer

2 of :19 1 of :19 [Kurssidene] [ ABI - fagsider bibin ]

Introduksjon til beslutningsstrukturer

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer...

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Metaspråket for å beskrive grammatikk

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

Repetisjon: Normalformer og SQL

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

Romlig datamanipulering

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Kunnskapsorganisasjon og gjenfinning 1

2: Hvilke verdier forekommer i attributtet filmtype i relasjonen filmitem? Lag en oversikt over filmtypene og hvor mange filmer innen hver type.

INF1300 Det meste av resten av

SQL Oppgave 3. SQL oppgave 3. Løsningsforslag

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

1. SQL spørringer mot flere tabeller

Spørsmålskompilering del 1

Spørsmålskompilering del 1

INF1300 Introduksjon til databaser

Join. Intuitivt: Skjøte sammen to relasjoner. Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen C

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

Indre select-setninger Nestede select-setninger

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Datamodellering og databaser SQL, del 2

Lynkurs i shellprogrammering under Linux

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

INFO122 Innføring i databaser. Oblig 2. av Frode H. Pedersen, Kjartan B. Michalsen og Kristin Breivik

Datamodellering og databaser SQL, del 2

INF1300 Introduksjon til databaser

En lett innføring i foreninger (JOINs) i SQL

SQL 3: Opprette tabeller, datainnsetting og utsnitt

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

Løsningsforslag eksamen i IN

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

SQL, del 1 - select. Hva er SQL?

Making IT work: Hvordan gjør man om DIPS PAS/EPJ til et system for beslutningsstøtte

Etternavn Fornavn Født Død Annet Felt

Oppgave 1 (Opprett en database og en tabell)

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

Verdier, variabler og forms

Andre sett obligatoriske oppgaver i INF3100 V2013

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Logg inn og introduksjon # 1. Endre passord # 2. Medlemsliste # 3. Registrere et nytt medlem/ny medarbeider # 4. Registrering av tidligere medlem # 5

Datamodellering og databaser SQL, del 2

EKSAMEN 6102 / 6102N DATABASER

Overordnet beskrivelse og arkitekturskisse

1. SQL datadefinisjon og manipulering

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Spørringer mot flere tabeller

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

Kunnskapsorganisasjon og gjenfinning sider (inklusive forside og vedlegg)

Systemutvikling fra kjernen og ut, fra skallet og inn

SQL: SELECT-spørringer

Oppgave 1 Datamodellering 22 %

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Tilgjegelighet av XHTML-forms

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Verktøy for boligkartlegging

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Verktøy for boligkartlegging

Øvingsforelesning 1 Python (TDT4110)

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Et forsøk på definisjon. Eksempel 1

Problemer med Indre joins. Inner joins og manglende verdier med aggregater. Left Outer Join. Outer Joins. Hvor mange har kjøpt hvert produkt?

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Løsningsforlag for oblig 2, databaser 2010

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Oppgave 1 Datamodellering 25 %

Et forsøk på definisjon

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

Legg merke til at summen av sannsynlighetene for den gunstige hendelsen og sannsynligheten for en ikke gunstig hendelse, er lik 1.

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Hefte med problemløsningsoppgaver. Ukas nøtt 2009/2010

Transkript:

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hioa.no) 10/11-15 DISTINCT Pregnante navn på kolonner Boolske operatorer: OR, NOT Beregningsfunksjoner og Gruppering NULL-verdier Maria Bello har to roller i Den mistenkte 10:13, men fordi vi ikke viser roller (interessert bare i medvirkende og program), vises "hennes" rad likt to ganger. Løsningen: SELECT DISTINCT Fornavn, Etternavn, Programtittel P, Medvirkende M, Deltagelse D AND M.MedvirkendeID= D.MedvirkendeID; Tilbake til spørringer mot en tabell, for et øyeblikk. SELECT Tilgjengelighet Av og til trenger vi en kontekst i våre søkeresulater I en slik spørring ønsker vi vite hva slags tilgjengelightsverdier vi har. Da er det nok å se hver verdi en gang. SELECT Etternavn, Programtittel P, Medvirkende M, Deltagelse D AND M.MedvirkendeID= D.MedvirkendeID AND D.Rolle="Skuespiller"; SELECT DISTINCT Tilgjengelighet Her vet vi at vi bare viser navn på skuespillere, og derfor ønsker å omdøpe kolonnen Etternavn i visningen til Skuespillernavn Det er også nokså typisk i Søk mot flere tabeller. For eksempel: SELECT Fornavn, Etternavn, Programtittel P, Medvirkende M, Deltagelse D AND M.MedvirkendeID= D.MedvirkendeID; SELECT Etternavn AS Skuespillernavn, Programtittel P, Medvirkende M, Deltagelse D AND M.MedvirkendeID= D.MedvirkendeID AND D.Rolle="Skuespiller"; 1 of 12 10.11.2015 14:49 2 of 12 10.11.2015 14:49

Ikke lik (<>) Vi kombinerer ofte to eller flere betingelser med de boolske operatorene AND, OR og NOT. Jeg vil liste opp alle program, med varighet, som ikke er sportsprogrammer AND betyr egentlig semantisk sett "samtidig som". SELECT Programtittel, Varighet WHERE Kategori <> 'Sport' En kombinert betingelse med "AND", stemmer bare når alle leddene stemmer samtidig. Har sett på i forbindelse med joins og andre betingelser. En kombinasjon av betingelser med OR stemmer når minst en av betingelsene er oppfylt. "Enten... eller" LIKE med venstre- og tosidig trunkering SELECT Programtittel, Kategori, Varighet, Tilgjengelighet WHERE Programtittel = 'Sjokoladesuget' OR Programtittel = 'Sportsrevyen'; List alle program hvis kategori slutter med "underholdning" (venstretrunkering) SELECT Programtittel, Varighet, Kategori WHERE Kategori LIKE '%underholdning'; Tosidig trunkering (litt tullete spørring, kanskje...) SELECT Programtittel, Varighet, Kategori WHERE Kategori LIKE '%og%'; 3 of 12 10.11.2015 14:49 4 of 12 10.11.2015 14:49

hente ut alle Programmer som har NOT betyr "utelukk". enten kategorien Filmer og serier eller kategorien Kultur og underholdning, NOT er ikke en selvstendig operator, kan brukes med AND (AND NOT) eller med OR (OR NOT) Samtidig som programmene er tillatt for alle aldersgrupper. Også her er det viktig å passe på å bruke parenteser. SELECT Programtittel, Kategori, Aldersgrense WHERE Kategori = 'Filmer og serier' OR Kategori = 'Kultur og underholdning' AND Aldersgrense = 'Tillatt for alle aldersgrupper'; SELECT Programtittel, Kategori, Varighet, Tilgjengelighet WHERE Programtittel = 'Sjokoladesuget' OR Programtittel = 'Sportsrevyen' AND NOT Tilgjengelighet = "Norge" "Aldersgrense 15 år" bryter åpenbart med det vi ønsker (tillatt for alle). OR og AND i èn kombinasjon er ikke logisk godt nok definerbart. Det samme kan ofte uttrykkes med <>- operatoren Her må vi bruke parenteser: "OR" mellom "Filmer og Serier" behandles først, deretter kombineres resultatet med Aldersgrensen med en "AND" SELECT Programtittel, Kategori, Aldersgrense WHERE Kategori = 'Filmer og serier' SELECT Programtittel, Kategori, Varighet, Tilgjengelighet WHERE Programtittel = 'Sjokoladesuget' OR Programtittel = 'Sportsrevyen' AND Tilgjengelighet <> "Norge" OR Kategori = 'Kultur og underholdning' AND Aldersgrense = 'Tillatt for alle aldersgrupper'; 5 of 12 10.11.2015 14:49 6 of 12 10.11.2015 14:49

SUM() AVG() - beregne gjemmomsnittet av verdier i en returnert kolonne: SELECT AVG(Varighet) SELECT SUM(Varighet) MAX() - Finn den største verdien SELECT MAX(Varighet) COUNT() SELECT COUNT(Programtittel) MIN() - finn den minste verdien SELECT MIN(Varighet) Alle disse funksjonene, AVG, SUM, MAX, MIN og COUNT, kan brukes også på delresultater. Eksempel: SELECT SUM(Varighet) WHERE Varighet < 38 Svar= 19 Disse funksjonene brukes ofte i forbindelse med gruppering. 7 of 12 10.11.2015 14:49 8 of 12 10.11.2015 14:49

Eksempel: SELECT Tilgjengelighet, COUNT(Tilgjengelighet) GROUP BY Tilgjengelighet; Alle kolonner i en tabell, bortsett fra primærnøkkelen kan, for noen rader, stå tomme. Da har de stort sett spesialverdien NULL Her er tabellen Medlemskap fra Bokormen (SELECT * FROM Medlemskap). Aktive medlemmer har NULL-verdier i utmeldingskolonnen. Count brukes til telle størrelse på grupper. Grupper defineres ofte av verdiene i en kollone, slik at verdiene i en gruppe er like. Brukes typisk om en kolonne som oppstår fra en beregningsfunksjon: SQL har spesialbetingelsene IS NULL og IS NOT NULL for å teste på Null-verdier. Eksempel: Når meldte det "eldste" aktive medlemmet seg inn i bokormen? SELECT Min(Inndato) AS innmeldingsdato FROM Medlemskap M WHERE Utdato IS NULL SELECT Tilgjengelighet, COUNT(Tilgjengelighet) AS Antall GROUP BY Tilgjengelighet; Dette gir oss en mer pregnant overskrift. 9 of 12 10.11.2015 14:49 10 of 12 10.11.2015 14:49

Tilbake til gruppering List ut titler på bestilte bøker og hvor ofte de er blitt bestilt. Prinsipp: Vi grupperer resultatene på (like) ISBN'er, og teller antall i gruppene. En rad representerer en gruppe SELECT B.ISBN AS BokID, Count(BG.Medlemsnr) AS antallganger FROM Bok B, Bestilling BG, Medlem M WHERE B.ISBN=BG.ISBN AND M. Medlemsnr=BG.Medlemsnr GROUP BY BokID ORDER BY antallganger DESC Hva heter de aktive medlemmene, når meldte de seg inn og hvilken klubb er de medlem i? SELECT Fornavn, Etternavn, Inndato, Klubbnavn FROM Medlem M, Medlemskap MK, Klubb K WHERE M.Medlemsnr=MK.Medlemsnr AND K.KlubbID=MK.KlubbID AND Utdato IS NULL Når, og fra hvilke klubber meldte medlemmer seg ut, og hvem er de? SELECT Fornavn, Etternavn, Utdato, Klubbnavn FROM Medlem M, Medlemskap MK, Klubb K WHERE M.Medlemsnr=MK.Medlemsnr AND K.KlubbID=MK.KlubbID AND Utdato IS NOT NULL 11 of 12 10.11.2015 14:49 12 of 12 10.11.2015 14:49