Vi (mis)bruger Google Regneark til at simulere en database. Udover de gænge regnearksfunktioner har den indbygget database-funktionalitet.
I regnearket laver man en "query" (forespørgsel), hvor man kan skrive en SQL kommando og retur får man resultatet af forespørgslen.
Formatet for en forespørgsel er:
QUERY(data; query)
hvor 'data' er det område i regnearket, hvor vores data ligger, mens 'query' er vores forespørgsel (SQL kommando)
Man vil i en celle eksempelvis skrive:
=QUERY(Form_Responses;"SELECT *")
I vil hurtigt opdage, at når man bruger kommandoen, er det alt eller intet forstået på den måde, at enten får man det man har bedt om eller også får man ingenting og en fejlbesked.
Det er så fordi der er noget galt i syntaksen i det man har skrevet.
Bemærk i øvrigt at der bruges en blanding af store og små bogstaver. Det der står med stort er reserverede ord i SQL, mens resten er navne på felter, værdier og den slags. Det gør det mere overskueligt at læse men er ikke tvingende nødvendigt.
Find ud af, hvad SQL betyder og beskriv det på din hjemmeside.
Tip på http://www.w3schools.com/sql kan I også læse om SQL og prøve det i praksis, men ellers er de også beskrevet kort nedenfor.
Du har fået til opgave at lave et tidsregistreringssystem for gymnasieelever, hvor elev kan skrive hvor meget tid, de bruger på de enkelte fag. Målet er at mindske stressniveauet hos gymnasieelever, så de ikke bruger al deres tid på gymnasiearbejde.
Man skal kunne gå ind på en hjemmeside og kunne indtaste sit klasse, navn, fag og hvor mange timer man har brugt samlet (tilstedeværelse, forberedelse og elevtid).
Informationerne bliver gemt i en database (Google Sheet, der deles med CS)
I Google Sheet tilknyttes en formular, som lægges i jeres portefølje
Skriv oplysningerne om tidsforbrug for de enkelte fag, eller find selv på nogle data, som I kan arbejde videre med.
Efter man har knyttet formularen til en database, oprettes i Google Sheet et ark kaldet "Formularsvar 1". Her kan man se alle de oplysninger der indtastes i formularen.
I øverste venstre hjørne står der "Form_Responses" som vi kan tænke som en tabel i vores database.
Det kan være en fordel at omdøbe det til noget mere sigende, eksempelvis "Tid", og så referere til det navn, når man skal have fata i "tabellen"
I det efterfølgende benyttes "Tid" som navnet på data/tabel
Når man vil have noget data ud af en database, så bruges kommandoen SELECT. Efterfølgende kommer navnene på de felter/kolonner vi skal bruge
Der er flere felter i tabellen, men jeg ønsker kun at bruge navn og tidsforbrug. Feltnavnene adskilles med komma.
Hvis man i en celle skriver:
=QUERY(Tid;"SELECT B,D")
hvor kolonne B eksempelvis er Navn og kolonne D er tids, så får man en tabel, der kun indeholder Navn og tidsforbrug
Hvis man ønsker at få det hele skrives der bare ' * '.
=QUERY(Tid;"SELECT * ")
Tilføj et nyt præsentations-ark og kopier alle formulardata over i det nye ark. Hvordan vil du gøre det ved hjælp af SQL?
Man kan være interesseret i at opstille nogle betingelser som skal være opfyldt for at en række vises. Eksempelvis en bestemt Bruger ID.
Det gøres på følgende måde:
SELECT * WHERE B='claus'
I vores google regneark skal der i en celle stå:
=QUERY(Tid;"SELECT * WHERE B='claus' ")
Lav en tilsvarende forespørgsel i dit eget regneark
Henter man har mange poster/rækker kan det være nyttigt at kunne sortere dem (f.eks. i alfabetisk orden, eller ud fra dato).
Hvis man skriver:
SELECT B,D ORDER BY B
bliver resultatet sorteret efter feltet B (Bruger ID).
Som standard sorteres ASC (ascending dvs. stigende), hvilket vil sige at 1 kommer før 2 og a før b. Ønsker med sorteret faldende, så skrivere man DESC til allersidst
Da vi ikke er interesseret i de tomme rækker, fravælges de og man får kommandoen:
SELECT * WHERE B<>'' ORDER BY D
'' er tomt indhold - ikke at forveksle med " (gåseøjne)
Lav en tilsvarende forespørgsel i dit eget regneark.
Lav nu forespørgsel på formen:
=QUERY(Tid;"SELECT B, SUM(D) WHERE B<>'' GROUP BY B")
hvor kolonne B er fag og kolonne D er elevtid
Se resultatet og prøv at gennemskue hvad funktionen gør og lav en vejledning til GROUP BY på din hjemmeside.
Lav en ny forespørgsel hvor du får summen af hver brugers elevtid