Querytraining HvA Basistraining query's bouwen in SIS
Versie Datum Auteur
1.0 07-03-2013 Eppo Drenth - CFB SIS HvA Mark van der Molen – CFB SIS UvA
Inhoudsopgave Doel van de training ................................................................................................................................ 4 1
Databases en SQL ............................................................................................................................ 5 1.1
Databases ................................................................................................................................ 5
1.2
Datatypes ................................................................................................................................ 5
1.3
SQL .......................................................................................................................................... 5
2
Opbouw van een query................................................................................................................... 7 2.1
Basis ........................................................................................................................................ 7
2.2
Criteria..................................................................................................................................... 7
2.3
Criteria Operators ................................................................................................................... 8
2.4
Meerdere criteria .................................................................................................................... 9
2.5
Sorteren .................................................................................................................................. 9
3
En nu in SIS… (opdracht 1) ............................................................................................................ 11 3.1
Records.................................................................................................................................. 12
3.2
Query..................................................................................................................................... 12
3.3
Velden ................................................................................................................................... 13
3.4
Sorteren en Veldvolgorde ..................................................................................................... 13
3.5
Opslaan ................................................................................................................................. 14
3.6
Criteria toevoegen ................................................................................................................ 14
3.7
SQL bekijken .......................................................................................................................... 17
3.8
Uitvoeren .............................................................................................................................. 17
4
Query uitbreiden (opdracht 2) ...................................................................................................... 18 4.1
Extra tabellen ........................................................................................................................ 18
4.2
Kolomkoppen wijzigen .......................................................................................................... 20
4.3
Het datamodel (opdracht 3) ................................................................................................. 21
4.4
Ingangsdatum (effective date) .............................................................................................. 23
4.5
Omschrijvingen uit andere tabellen (opdracht 4)................................................................. 24
4.6
Omschrijvingen via XLAT-velden (opdracht 5) ...................................................................... 25
5
Opdracht 6 .................................................................................................................................... 27
6
Query uitbreiden ........................................................................................................................... 29 6.1
Prompts ................................................................................................................................. 29
6.2
Simpele prompt (opdracht 7)................................................................................................ 31
6.3
Complexe prompts (opdracht 8) ........................................................................................... 33
7 Versie
Expressies ...................................................................................................................................... 35 : 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
2 / 47
7.1
ORACLE functies .................................................................................................................... 35
7.2
Logica .................................................................................................................................... 36
7.3
Maken van een expressie (opdracht 9)................................................................................. 37
7.4
Complexe expressie (opdracht 10) ....................................................................................... 40
7.5
Prompts in expressies ........................................................................................................... 41
8
Outer joins (opdracht 11).............................................................................................................. 42
9
Van alles en nog wat ..................................................................................................................... 44 9.1
Platte tabellen ....................................................................................................................... 44
9.2
Related language................................................................................................................... 44
Bijlage A Hoe kom ik achter het juiste record en veld .......................................................................... 45 Firefox ............................................................................................................................................... 45 Chrome .............................................................................................................................................. 45 Internet Explorer 8 ............................................................................................................................ 46 Bijlage B Basis opzetten nieuwe query ................................................................................................. 47
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
3 / 47
Doel van de training Deze training is een basistraining vanaf nul tot simpele query's. Na deze training begrijp je hoe query's opgebouwd zijn en hoe je in SIS query's kunt bouwen.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
4 / 47
1 Databases en SQL 1.1
Databases
SIS maakt gebruik van een relationele database (Oracle). De gegevens zijn opgeslagen in tabellen met daarin rijen, in SIS heten tabellen Records. Een rij in de tabel bevat altijd een unieke sleutel (primary key), dit kan een enkel veld zijn maar ook een combinatie van velden. Tabellen kunnen onderling gekoppeld zijn door middel van relaties. Relaties lopen over de zgn. verwijzende sleutel (foreign key). Meerdere tabellen kunnen onderling samengevoegd zijn door middel van een zogenaamde view. Dit maakt het maken van query's makkelijker omdat je dan zelf niet meer die tabellen aan elkaar hoeft te knopen. Views zijn in SIS ook records en op dezelfde manier te gebruiken als tabellen. Alle velden zijn van een bepaald datatype (teken, tekst, numeriek, datum, enz.) en kunnen een maximale lengte hebben.
1.2
Datatypes
SIS kent een aantal datatypes, voor o.a. teksten, getallen, datums. De belangrijkste zijn: Teken (Oracle: VARCHAR2): Normale tekstvelden. Maximum aantal karakters is bepaald (van 1 tot 4000). Tekst (Oracle: CLOB/BLOB): Lange tekstvelden, HTML, plaatjes. In principe onbeperkte lengte. Getal/Getal met Teken (Oracle: NUMERIC): Getallen met of zonder decimalen. Getal3.2: positief getal, drie posities voor, 2 na komma, totale lengte is dus 5. GmT3.2: positieve en negatieve getallen, drie posities voor, 2 na komma, totale lengte is dus 5. Datum (Oracle: DATE): Datum en/of tijd.
1.3
SQL
SQL staat voor Structured Query Language. Dit is een gestandaardiseerde programmeertaal om databases te kunnen bevragen. Het werkt met de meeste databasesystemen op dezelfde manier (Oracle, Microsoft SQL Server, maar ook Microsoft Access), al kunnen er tussen de verschillende databases kleine verschillen zijn. Er zijn twee soorten SQL instructies: DDL: Data Definition Language, aanmaken en wijzigen van o.a. tabelstructuren, deze kun je in SIS niet gebruiken. Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
5 / 47
DAL: Data Access Language, selecteren en manipuleren van gegevens in tabellen, dit is de variant die in SIS te gebruiken is.
Je kunt verschillende commando's gebruiken in SQL. SELECT: voor het selecteren van gegevens. UPDATE: voor het bijwerken van gegevens. INSERT: voor het toevoegen van gegevens. DELETE: voor het verwijderen van gegevens. In SIS is via de querytool alleen het SELECT commando te gebruiken.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
6 / 47
2 Opbouw van een query Een query is altijd volgens een vast patroon opgebouwd. Je moet aangeven welke tabellen je wilt gebruiken, welke kolommen en verder eventuele criteria. De meest simpele vorm van een query is een selectie van één veld uit één tabel zonder verdere criteria, dit is uit te breiden tot 26 tabellen in SIS met meerdere velden, criteria en expressies.
2.1
Basis
Meest simpele vorm: SELECT
FROM Voorbeeld SELECT A.INSTITUTION, A.DESCR FROM PS_INSTITUTION_TBL A In dit voorbeeld worden de velden met de INSTITUTION (Onderwijsinstelling) en de DESCR (omschrijving) geselecteerd uit het record INSTITUTION (Onderwijsinstelling). Zoals je ziet zijn de record en veldnamen in het Engels. Op het scherm zul je meestal de Nederlandse namen zien omdat je meestal ingelogd bent in het Nederlands. In bijlage A wordt een handige methode uitgelegd hoe je erachter kunt komen welk record en welk veld je precies nodig hebt als je op het scherm zit met de gegevens die je wilt zien in je query. De meeste records beginnen met PS_. In de user interface van SIS zie je deze prefix niet maar in het gegenereerde SQL statement wel. Bijvoorbeeld het record INSTITUTION heet in de database PS_INSTITUTION. Een aantal technische records beginnen met PS (zonder underscore). Deze heb je doorgaans niet nodig in je query, in de userinterface van SIS zie je deze wel met de volledige naam. Bijvoorbeeld PSOPRDEFN bevat de LDAP useraccounts met de koppeling naar de EMPLIDs. Record aliassen: elk record dat in een query gebruikt wordt krijgt een alias, dit is een letter (A t/m Z), we zijn dus beperkt tot maximaal 26 tabellen in één query. Deze aliassen is om aan te geven uit welke tabel een kolom komt in het geval van dezelfde kolomnamen in meerdere tabellen. Hoofdletters: hoewel SQL statements niet hoofdlettergevoelig zijn werken we in principe altijd met hoofdletters. De query editor doet dit voor de meeste dingen al standaard voor je. Criteria echter zijn wel hoofdlettergevoelig.
2.2
Criteria
Door middel van criteria kun je voorwaardes opnemen in een query om gegevens te filteren. SELECT FROM WHERE
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
7 / 47
Voorbeelden SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.EMPLID = '500132190' In dit voorbeeld worden studentnummer, voornaam, tussenvoegsels en achternaam van student met studentnummer 500132190 getoond. SELECT A.EMPLID, A.BIRTHDATE FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE > TO_DATE('1980-01-01','YYYY-MM-DD') In dit voorbeeld worden studentnummer en geboortedatum van alle personen met een geboortedatum na 1 januari 1980 getoond. Criteria voor tekst en datumvelden moeten tussen enkele aanhalingstekens, dit doet SIS zelf voor je. Criteria voor tekstvelden zijn hoofdlettergevoelig. Bij datumvelden moet je een expressie gebruiken om de datum in het juiste formaat te zetten zodat SIS snapt wat de dag-, maand- en jaardelen van de voorwaarde zijn.
2.3
Criteria Operators
Bij criteria moet je aangeven met welke voorwaarde deze moet werken, er is een lijst met standaardvoorwaarden waaruit je kunt kiezen. Simpel Voorwaarde Syntax Toepasbare datatypes gelijk aan = [waarde] Teken, Getal, Datum, Tekst groter dan > [waarde] Teken *, Getal, Datum in lijst IN ('[waarde 1]','[waarde 2]', '[etc]') Teken, Getal, Datum niet in lijst NOT IN ('[waarde 1]','[waarde 2]', ..) Teken, Getal, Datum kleiner dan < [waarde] Teken *, Getal, Datum niet gelijk aan <> [waarde] Teken *, Getal, Datum niet groter dan <= [waarde] Teken *, Getal, Datum niet kleiner dan >= [waarde] Teken *, Getal, Datum tussen BETWEEN [waarde 1] AND [waarde 2] Teken *, Getal, Datum niet tussen NOT BETWEEN [waarde 1] AND [waarde 2] Teken *, Getal, Datum zoals LIKE [waarde] Teken niet zoals NOT LIKE [waarde] Teken Datatypes: bij * kun je onverwachte resultaten krijgen. Met bijvoorbeeld een groter dan 'X' krijg je resultaten die met Y en Z beginnen maar niet die met A-X beginnen, dit is meestal niet iets wat je wilt. Bij 'zoals' en 'niet zoals' kan je de wildcards % en _ gebruiken, % is voor meerdere tekens, _ is voor exact één teken.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
8 / 47
Geavanceerd Voorwaarde bestaat bestaat niet in boom niet in boom is null is niet null
2.4
Syntax EXISTS (<subquery>) NOT EXISTS (<subquery>) niet gebruiken niet gebruiken IS NULL IS NOT NULL
Toepasbare datatypes n.v.t. n.v.t.
n.v.t. n.v.t.
Meerdere criteria
Je kunt uiteraard meerdere criteria opnemen in een query, met de onderstaande operators kun je aangeven wat je precies wilt. EN (AND) OF (OR) EN NIET (AND NOT) OF NIET (OR NOT) Je kunt ook haakjes gebruiken als je de volgorde wilt beïnvloeden. Let vooral bij het gebruik van de OF goed op. Bij de OF en OF NIET moet je bijna altijd haakjes gebruiken als je naast een OF ook al een EN of andere joinvoorwaarden hebt. Voorbeelden SELECT A.EMPLID, A.BIRTHDATE, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE > TO_DATE('1980-01-01','YYYY-MM-DD') AND A.LAST_NAME LIKE 'Jans%' In dit voorbeeld worden studentnummer, geboortedatum en achternaam getoond van de studenten die geboren zijn na 1 januari 1980 en waarbij de achternaam begint met 'Jans' SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.EMPLID = '500132190' OR A.LAST_NAME LIKE 'Jans%' In dit voorbeeld worden de gegevens van de student 0000027 en de studenten met achternaam beginnend met 'Jans' getoond.
2.5
Sorteren
Je kunt de uitkomst van een query sorteren op elke in de query gebruikte kolom, tevens kun je aangeven of je oplopend of aflopend wilt sorteren. Ook kun je op meerdere kolommen sorteren. ORDER BY , , etc. Standaard sortering is oplopend, wil je aflopend sorteren gebruik dan DESC (descending) achter de kolomnaam. In SIS is dit door middel van een checkbox in te stellen. Voorbeeld Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
9 / 47
SELECT A.EMPLID, A.BIRTHDATE, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE > TO_DATE('1980-01-01','YYYY-MM-DD') AND A.LAST_NAME LIKE 'Jans%' ORDER BY A.LAST_NAME, A.FIRST_NAME In dit voorbeeld worden de resultaten gesorteerd op achternaam en vervolgens op voornaam.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
10 / 47
3 En nu in SIS… (opdracht 1) Rapportagehulpmiddelen > Query > Querybeheer
Kies 'Nieuwe query maken'. Nieuwe query maken
Tabjes Tab/Knop/Link Records Query Expressies Prompts Velden Criteria Having SQL bekijken Uitvoeren Eigenschappen
Versie
Functie Hier kun je records (tabellen) zoeken en toevoegen aan de query Hier kun je velden van de records selecteren die je in de output wilt zien Als je dingen wilt doen zoals samenvoegen van velden of rekenen Variabele criteria die je zelf kunt invullen De lijst van geselecteerde velden voor de output en de sortering De criteria Criteria indien je met gegroepeerde gegevens werkt Het SQL statement zoals SIS dat voor je maakt De query uitvoeren en het resultaat bekijken De naam, omschrijving, korte omschrijving, eigenaar en soort query
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
11 / 47
3.1
Records
Linkje Record toev. Velden tonen
Functie Voor het selecteren van het juiste record Als je vooraf wilt kijken welke velden er in het record zitten
Stap 1 Zoek PERSONAL_DATA en klik op 'Record toev.'
3.2
Query
Hier selecteer je de velden die je in de output wilt zien. Let op, je ziet maar 50 velden op één pagina, als een record dus meer dan 50 velden bevat kan het zijn dat het veld dat je zoekt op een vervolgpagina staat. Stap 2 Selecteer de kolommen EMPLID, NAME_ROYAL_PREFIX, FIRST_NAME, LAST_NAME, COUNTRY, BIRTHDATE
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
12 / 47
3.3
Velden
Hier zie je de geselecteerde velden. Tevens zie je o.a. het datatype (opmaak), de sortering en de koptekst. Ook hier geldt, bij query's met meer dan 50 velden zie je alleen de eerste 50 op de eerste pagina, dit is ook bij het sorteer- en veldvolgordescherm het geval. Stap 3 Klik op de 'Opnw sorteren' knop.
3.4
Sorteren en Veldvolgorde
Hier kun je de sortering van de rijen en de volgorde van de kolommen aanpassen. Stap 4 We willen de kolommen FIRST_NAME, NAME_ROYAL_PREFIX en LAST_NAME na de kolom EMPLID. Vul in het veld 'Nieuwe kolom' bij FIRST_NAME 2, NAME_ROYAL_PREFIX 3, LAST_NAME 4 in.
Stap 5 Vul achter veld LAST_NAME in het veld 'Sorteervolgorde' 1 in en achter veld 'FIRST_NAME' een 2.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
13 / 47
Het resultaat: de kolommen staan in de gewenste volgorde en de sortering is ook zoals we het willen hebben.
3.5
Opslaan
Dit is een goed moment om je query op te slaan, doe dit regelmatig. Als SIS in een time-out loopt ben je je niet opgeslagen werk kwijt.
Stap 6 Sla de query op onder de naam 'XX_QUERYTRAINING_OPDRACHT_1', waarbij XX jouw initialen zijn. Veld Query Omschrijving Map Soort query Eigenaar Querydefinitie
3.6
Functie De unieke naam van de query. Korte omschrijving. Een map op de server waarin je de query kunt opslaan. 'Gebr.' 'Pers.', je kunt alleen persoonlijke query's aanmaken. Lange omschrijving waar de query voor dient en wat hij doet.
Criteria toevoegen
Er zijn een aantal manieren, eerst de makkelijke: Stap 7 Klik op de het trechtersymbool achter rij 4 (A.LAST_NAME)
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
14 / 47
Blok 'Soort expressie 1 kiezen': dit is het linkerdeel van het criterium Blok 'Expressie 1': dit is de waarde van de soort Expressie, in ons geval de naam van het gekozen veld (A.LAST_NAME) Soort voorwaarde: dit is een lijst van mogelijke operatoren, deze lijst is afhankelijk van het datatype van het veld in 'Expressie 1'.
Blok 'Soort expressie 2 kiezen': dit is het rechterdeel van het criterium, de mogelijkheden zijn afhankelijk van de waarde van 'Soort voorwaarde'. Veld Expressie Constante Prompt Subquery
Voor het vergelijken van twee velden. Voor ingewikkelder vergelijkingen met bv. berekeningen. Voor vergelijken met een constante waarde. Voor vergelijken met een door de gebruiker op te geven waarde. Voor ingewikkelder vergelijkingen met extra tabellen.
Blok 'Expressie 2': dit is de waarde waarmee we gaan vergelijken. Stap 8 Laat de opties zoals ze nu staan, vul bij constante 'Jans' in.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
15 / 47
Het ingevulde scherm. Via het tabje Criteria kun je reeds aangemaakte criteria bekijken, bewerken en verwijderen.
Stap 9 We willen alle achternaam die beginnen met Jans, klik op 'Bew.' Verander de 'Soort voorwaarde' in 'zoals' en voeg bij de constante '%' achter 'Jans' en klik op OK
De tweede manier: Variant hierop is via het tabblad 'Query'. Hier zit ook hetzelfde trechtertje, alleen hier worden alle velden genoemd en kan je dus ook criteria toevoegen voor velden die niet in de 'Velden' tab staan omdat je ze niet in de output wilt hebben.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
16 / 47
De derde manier: Klik op de het tabblad 'Criteria' op de knop 'Criteria aan query toevoegen'. Je komt nu in een leeg criteria scherm waarbij je nu ook blok 'Soort expressie 1 kiezen' in moet vullen. Bij de eerste manier was dit al voor je gedaan. In sommige situaties heb je echter deze derde manier nodig, bijvoorbeeld als je criteria toe wilt voegen die niet aan een veld gerelateerd zijn of als je criteria met expressies aan de linkerkant van de vergelijking wilt maken. Qua werking maakt het niet uit, je kunt deze manier altijd gebruiken.
3.7
SQL bekijken
Hier zie je het gegeneerde SQL statement wat SIS voor je maakt. Stap 10 Sla de query op en voer hem uit door op het 'Uitvoeren' tabje te klikken, de query wordt nu meteen uitgevoerd en het resultaat wordt op het scherm getoond.
3.8
Uitvoeren
Hiervandaan kan je het resultaat ook downloaden naar Excel. Er zit een limiet op het maximaal aantal gegevens dat via deze output getoond kan worden. Krijg je de melding dat het resultaat te groot is voer hem dan via de queryplanner uit. Ook kan het voorkomen dat het uitvoeren van een query langer duurt dan 3 minuten, in dit geval word je automatisch uit SIS gegooid en moet je opnieuw inloggen. Voer de query in dit geval ook uit via de queryplanner.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
17 / 47
4 Query uitbreiden (opdracht 2) 4.1
Extra tabellen
Het is uiteraard mogelijk om meerdere tabellen in een query te gebruiken. Deze tabellen worden aan elkaar gekoppeld via gelijke velden, dit heet joinen. Er zijn twee mogelijke manieren om te joinen, de zogenaamde standaard- of inner join en de outer join. Bij de inner join komen alleen de regels uit de query waarbij in beide tabellen gegevens aanwezig zijn. Bijvoorbeeld als je personen aan landen koppelt komen alleen de personen mee die ook een land hebben. Door middel van een outer join kun je ook de personen meekrijgen die geen land hebben, de kolommen met de landgegevens zijn in dat geval leeg. In ons voorbeeld willen we in plaats van de code van het land, de omschrijving hebben. Er zijn twee manieren om een join tussen tabellen te maken, eerst de makkelijke. Helaas kan deze niet altijd en heeft deze ook een nadeel. De andere manier wordt in paragraaf 4.3 beschreven. Stap 1 Open de query uit de vorige opdracht ('XX_QUERYTRAINING_OPDRACHT_1'), ga naar het tabblad 'Query' en klik achter het veld 'COUNTRY - Land' op de link 'Join COUNTRY_TBL'.
Kies de bovenste optie (standaardjoin) en klik op 'OK'.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
18 / 47
De COUNTRY_TBL is nu gekoppeld aan de PERSONAL_DATA, je kunt nu de kolommen kiezen die je in de query output wilt zien. Stap 2 Selecteer 'DESCR' Als je vervolgens op het tabje 'SQL bekijken' klikt zie je het volgende SQL statement.
Je ziet hier dat PS_COUNTRY_TBL gekoppeld wordt met de PS_PERSONAL_DATA en wel waar beide COUNTRY velden gelijk zijn. Dit is de standaard JOIN. Het nadeel van het gebruiken van de link 'Join COUNTRY_TBL' is dat het criterium dat de COUNTRY velden gelijk zijn wel in de SQL zichtbaar is, maar niet in het tabblad ‘Criteria’.
Ga naar het tabblad ‘Query’ naar de tabel COUNTRY_TBL en zet een vinkje voor het veld DESCR, zodat de omschrijving van het land in de output komt. Ga nu naar het tabblad ‘Velden’. De nieuwe kolommen worden altijd onderaan toegevoegd. Je kunt deze verplaatsen via 'Opnw sorteren'.
Stap 3 Zet de kolom B.DESCR op de plaats van A.COUNTRY en verwijder de kolom A.COUNTRY.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
19 / 47
Nu staat de kolom met de landomschrijving wel op de goede plek, alleen willen we er wel in de Koptekst bijzetten dat het het land is. Stap 4 Klik op de knop 'Bew.' achter de rij 'B.DESCR'. Het is mogelijk meerdere tabellen te joinen, tot 9 tabellen per query voor persoonlijke query's.
4.2
Kolomkoppen wijzigen
Kies bij Koptekst altijd 'Tekst'. Als je dit niet doet, verandert de koptekst niet. Vul bij 'Koptekst' de nieuwe omschrijving in. Stap 5 Noem de koptekst 'Land'.
Stap 6 Voer de query uit.
Stap 7 Ga naar 'Opslaan als' onderin het scherm en sla de query op als 'XX_QUERYTRAINING_OPDRACHT_2', waarbij XX jouw initialen zijn.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
20 / 47
4.3
Het datamodel (opdracht 3)
SIS bestaat uit heel erg veel records (honderden), de meeste records zijn onderling verbonden met relaties. Het is handig om te onderzoeken welke gegevens je nodig hebt in je query en uit welke records deze komen en vervolgens kun je de relaties bepalen. Er is een document met een beknopt overzicht van de meest gebruikte records en de onderlinge relaties.
In de regel lopen de relaties over velden met dezelfde naam maar dit is niet altijd het geval. In bovenstaand plaatje zie je bij de records in de eerste kolom een aantal afkortingen. 'PK' betekent 'Primary Key', dit is het unieke kenmerk van een rij in het record. Bijvoorbeeld in het record 'ACAD_PROG_TBL' is de combinatie 'INSTITUTION', 'ACAD_PROG' en 'EFFDT' uniek voor elke rij, dit is dus de primary key. 'FK1' betekent 'Foreign Key' (verwijzende sleutel), dit is de verwijzing van het ene record naar het andere volgens het lijntje in het plaatje. Bijvoorbeeld bij het record 'ACAD_PROG' staat FK1 bij de velden 'INSTITUTION' en 'ACAD_PROG', dit is de verwijzing naar het record 'ACAD_PROG_TBL'. Meestal verwijst een foreign key van de ene tabel naar de primary key van de andere tabel. De lijnen in het plaatje geven de soort koppeling weer. Een lijn kan met een vorkje aan een tabel getekend zijn of met een enkele lijn. Een enkele lijn staat voor ‘1’, een vorkje staat voor ‘veel’. ACAD_PROG_TBL is met een ‘1 op veel’ relatie gekoppeld aan ACAD_PLAN_TBL. Een bolletje in de lijn betekend dat de koppeling optioneel is. Een rij in ACAD_GROUP heeft altijd een koppeling met 1 of meerdere rijen in ACAD_PROG. Een rij in ACAD_PROG heeft een koppeling met nul, met 1 of met meerdere rijen in SSR_STD_PRG_NLD.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
21 / 47
Stap 1 Wij willen bij deze studenten hun studieprogramma('s) zien, deze kun je niet direct vanuit de PERSONAL_DATA tabel joinen. Dit moet dus op een andere manier. Open de query uit opdracht 2. Studieprogramma's per student zitten in het record 'ACAD_PROG'. De relatie met de PERSONAL_DATA loopt over de velden EMPLID.
Stap 2 Zoek de tabel ACAD_PROG.
Stap 3 Klik op Joinrecord.
Stap 4 Bij 'Soort join' altijd de 'standaardjoin' kiezen. We moeten het record ACAD_PROG via het veld EMPLID aan het record PERSONAL_DATA koppelen, klik op de regel 'A = PERSONAL_DATA …' om deze te kiezen.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
22 / 47
Stap 5 Er komt nu een voorstel voor de joinvoorwaarde. In dit geval is deze correct dus je kunt op de knop 'Crit. toevoegen' klikken.
4.4
Ingangsdatum (effective date)
De query editor heeft een ingebouwde voorziening om altijd de laatste ingangsdatum te tonen, dit is de standaardinstelling en meestal correct. Het is mogelijk om alle rijen in de query te krijgen door dit criterium handmatig te verwijderen.
Het record is toegevoegd aan de query. Stap 6 Selecteer ACAD_CAREER, STNDT_CAR_NBR, EFFDT en ACAD_PROG.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
23 / 47
Als je de criteria bekijkt zie je de joinvoorwaarde en de extra voorwaarde op de Ingangsdatum. Stap 7 Verwijder het criterium op de A.LAST_NAME en voeg er eentje toe op A.EMPLID = 500132190. Toevoegen kan via de knop 'Criteria aan query toevoegen', kies via het lookup symbool bij 'Expressie 1' het veld EMPLID uit record PERSONAL_DATA.
Stap 8 Sla de query op als 'XX_QUERYTRAINING_OPDRACHT_3' en voer de query uit.
Deze student heeft dus inschrijvingen voor twee opleidingen.
4.5
Omschrijvingen uit andere tabellen (opdracht 4)
Nu willen we natuurlijk naast de code ook de omschrijving zien van de opleiding. Stap 1 Op het tabje Records, kies de tabel 'ACAD_PROG_TBL' via 'Joinrecord', klik op 'C = ACAD_PROG'. De join tussen deze twee tabellen loopt over twee kolommen, helaas geeft SIS je een voorstel voor drie kolommen, je moet daarom de checkbox voor C.ACAD_CAREER = A.ACAD_CAREER leegmaken.
Stap 2 Ook de ACAD_PROG_TBL heeft een ingangsdatum, klik OK op de melding hierover.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
24 / 47
Stap 3 Selecteer het veld 'DESCR', sla de query op als 'XX_QUERYTRAINING_OPDRACHT_4' en voer de query opnieuw uit.
4.6
Omschrijvingen via XLAT-velden (opdracht 5)
De loopbaan wordt nu nog als nummer weergegeven, eigenlijk willen we hier de omschrijving van zien. De loopbaan is een zogenaamd XLAT-veld. Dit type tekstveld heeft een aparte constructie voor het opslaan van de lange en korte omschrijving. Ze zijn te herkennen aan een letter in de kolom 'Xlat', de mogelijke letters zijn N (geen omschrijving), S (korte omschrijving) of L (lange omschrijving).
Stap 1 Ga naar het tabblad 'Velden' en druk op de knop 'Bew.' achter het veld 'C.ACAD_CAREER'
Er is nu een extra blok 'Xlat-waarde' bijgekomen. Je kunt hier de korte of lange omschrijving kiezen. Laat de ingangsdatum op huidige datum staan, dit is in de meeste gevallen goed. Stap 2 Kies voor 'Lang' en druk op OK, je ziet dat de letter N nu veranderd is in een L.
Stap 3 Sla de query op als 'XX_QUERYTRAINING_OPDRACHT_5' en voer de query uit.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
25 / 47
De loopbaan wordt nu voluit geschreven.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
26 / 47
5 Opdracht 6 Maak een nieuwe query met daarin een overzicht van de studenten die ingeschreven staan op een studieactiviteit. De studieactiviteiten staan in het record CLASS_TBL. De inschrijvingen staan in het record 'STDNT_ENRL', de join met de CLASS_TBL is over STRM en CLASS_NBR.
Toon de volgende kolommen: CLASS_TBL: CRSE_ID, STRM, SESSION_CODE, CLASS_NBR STDNT_ENRL: EMPLID, STDNT_ENRL_STATUS Criteria: CLASS_TBL: Periode: 2113, Nr studieactiviteit: 9841 Sorteer op EMPLID Sla deze op als 'XX_INSCHRIJVINGEN_STACTIV', vervang XX door jouw initialen.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
27 / 47
Het uitgewerkte antwoord:
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
28 / 47
6 Query uitbreiden 6.1
Prompts
Prompts zijn variabelen die bij het uitvoeren van de query door de gebruiker ingevuld kunnen worden. Hiermee kun je criteria in een query maken zodat een query algemeen gebruikt kan worden. Bijvoorbeeld onderstaande query: SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.EMPLID = '500132190' Deze query selecteert alleen de gegevens voor student 500132190. Als je dus een andere student wilt moet je steeds het criterium aanpassen. Dit is natuurlijk omslachtig. Het zou handiger zijn als je voor het uitvoeren van de query een invulveld hebt waar je een studentnummer kunt intikken. Dit gaat door middel van prompts. Er zijn vier soorten prompts: 1. Verplicht met tabelvalidatie: dit is een vrij invulveld met een lookup-popup en validatie. 2. Niet verplicht met of zonder tabellookup: idem maar dan zonder validatie en optionele lookup-popup. 3. Ja/Nee: dit levert een checkbox op. 4. Xlat-tabel: alleen voor velden met een Xlat waarde, dit levert een dropdown selectbox op, altijd verplicht. Prompts zijn altijd van een bepaald datatype, meestal komt dit overeen met het datatype van het veld waaraan het gekoppeld wordt. Tevens kunnen ze een indeling hebben, dit is een verfijning op het datatype waardoor bijvoorbeeld hoofd- en kleine letters, getallen, tijd, enz. afgedwongen kunnen worden. Datumprompts zijn altijd verplicht als je een kalender lookup wilt. Prompts zijn herbruikbaar, je kunt ze dus op meerdere plaatsen in je criteria en in je output gebruiken. Er zijn twee manieren om prompts aan te maken, de makkelijke manier is door bij het maken van een criteria de optie 'Prompt' te kiezen en vervolgens 'Nieuw'. In dat geval worden namelijk vaak een hoop gegevens al voor je ingevuld.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
29 / 47
Veld Veldnaam Soort Indeling Lengte/decimalen Koptekst Unieke naam prompt Soort promptedit
Omschrijving Dit is niet verplicht maar wel erg handig. Als je hier de naam van een veld kiest worden de meeste overige opties al voor je ingevuld. Het datatype van de prompt. De nadere specificatie van de prompt. Het maximaal aantal tekens dat ingevoerd kan worden, dit is meestal gelijk aan die van het datatype van het gekoppelde veld maar dit hoeft niet. De naam van de prompt, voor verplichte prompts begin deze met '* ' (sterretje met een spatie). Deze wordt door SIS gegenereerd, laat deze verder zo staan. Dit is het type prompt. Als je voor de prompttabel kiest moet je bij de lookup 'Prompttabel' een lookup tabel kiezen. Lookuptabellen zijn erg handig maar soms lastig om goed in een query aan het werk te krijgen.
De tweede manier is via de knop 'Prompt aan query toevoegen' op het tabblad 'Prompts'.
Nu kom je in een leeg scherm 'Prompteigenschappen bewerken' zoals boven staat. Het beste kun je nu eerst bij 'Veldnaam' een veld kiezen, dan worden er automatisch al een aantal gegevens ingevuld. Zo niet, dan moet je de rest van de velden handmatig goed zetten.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
30 / 47
6.2
Simpele prompt (opdracht 7)
Zoek de query uit opdracht 6 op. Als eerste een eenvoudige prompt. Pas het criterium op A.CLASS_NBR zodanig aan dat er een prompt op komt zonder tabelvalidatie. Sla deze query op als 'XX_INSCHR_STACTIV_PROMPT' en voer hem uit. Je kunt als CLASS_NBR 9841 gebruiken om resultaat te krijgen.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
31 / 47
Het uitgewerkte antwoord:
Je ziet hier dat er een prompt aangemaakt is, deze zijn te vinden op het tabblad 'Prompts'. In de lijst met criteria zie je ':1' staan bij A.CLASS_NBR, dit betekent dat het CLASS_NBR gelijk moet zijn aan prompt nummer 1.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
32 / 47
6.3
Complexe prompts (opdracht 8)
Nu willen we natuurlijk een handige lookup maken voor CLASS_NBR. Dit kan maar dan moeten we wel een aantal extra stappen doen. Stap 1 Zoek de query uit opdracht 6 op (XX_INSCHRIJVINGEN_STACTIV), niet die uit de vorige opdracht. Voeg in onderstaande volgorde prompts toe op de velden van de CLASS_TBL: INSTITUTION, STRM en CLASS_NBR. De volgorde is belangrijk, sommige lookups hebben namelijk waardes nodig van andere prompts. In dit geval heeft de lookup bij CLASS_NBR zowel INSTITUTION als STRM nodig om waardes te kunnen tonen.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
33 / 47
Stap 2 Sla de query op als 'XX_INSCHR_STACTIV_PROMPTS' en voer hem uit. Je moet nu drie velden invullen voordat je resultaten krijgt, vul de volgende waarden in: INSTITUTION: IN020; STRM: 2113; CLASS_NBR: 9841.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
34 / 47
7 Expressies Via expressies kun je speciale functies en logica in kolommen en criteria opnemen. Expressies kun je maken via het tabje 'Expressies' als je er een als veld wilt hebben, of via opties bij de criteria. Je kunt de weergave van de resultaten in een gewenst formaat maken, bijvoorbeeld iets altijd in hoofdletters weergeven. Functies in de query: ORACLE functies Meeste standaard Oracle functies worden ondersteund Bijvoorbeeld: UPPER, TO_CHAR, SUBSTR Afhankelijke logica (als-dan/if-then-else): ORACLE programmeerlogica Bijvoorbeeld: velden aan elkaar plakken, berekeningen Bijvoorbeeld: CONCAT, NVL, DECODE, CASE
7.1
ORACLE functies
TO_CHAR Datum/nummer formatteren TO_CHAR(,) TO_CHAR(A.GRADE_DT,'DD-MONTH-YY') geeft 01-May-12
UPPER Omzetten naar hoofdletters UPPER() UPPER('Jansen') geeft 'JANSEN'
LOWER Omzetten naar kleine letters LOWER() LOWER('Jansen') geeft 'jansen'
REPLACE Vervangen binnen een tekstveld REPLACE(,,) REPLACE(A.NAME,'a,'o'). Als A.NAME = 'Jansen' geeft 'Jonsen'
SUBSTR Teksten uit elkaar peuteren SUBSTR(,<start>,[]) Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
35 / 47
Voorbeeld A.NAME = 'Jansen' SUBSTR(A.NAME,1,1) geeft 'J' SUBSTR(A.NAME,2) geeft 'ansen' SUBSTR(A.NAME,-1,1) geeft 'n'
INSTR de positie van een woord of karakter binnen een tekst INSTR(,,[<positie>],[]) INSTR('ab ab ab','ab') geeft als resultaat 1 INSTR('ab ab ab','ab',1,2) geeft als resultaat 4 INSTR('abcabcabcdef','de') geeft als resultaat 7
Concateneren Teksten aan elkaar plakken Met de CONCAT functie: omslachtig, niet doen of met de dubbele pipe: ||. Deze laatste werkt heel makkelijk. || A.VOORNAAM || A.ACHTERNAAM geeft 'PeterJansen' A.VOORNAAM || ' ' || A.ACHTERNAAM geeft 'Peter Jansen'
Je kan functies ook nesten: REPLACE(REPLACE(TO_CHAR(TO_DATE('01-MAY-12','DD-MON-YY'),'DD-MonthYYYY','nls_date_language = Dutch'),' ',''),'-',' ') geeft als resultaat '01 Mei 2012'.
7.2
Logica
Er zijn twee handige functies waarmee je logica in je expressie of criterium kunt opnemen: NVL en DECODE. NVL Vervangt een NULL of lege waarde door de opgegeven default. NVL(, <default>) NVL(A.VOLGNR, 1) als A.VOLGNR leeg is wordt 1 gebruikt Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
36 / 47
DECODE Vertalen van een waarde in een andere waarde DECODE(, <waarde>, [,…], [<default>]) DECODE(A.ENRL_ACTION_REASON, 'E', 'Enrolled', 'D', 'Dropped', 'Waitlist') Als de waarde van A.ENRL_ACTION_REASON 'E' is komt hier 'Enrolled' uit, als hij 'D' is 'Dropped' en in alle andere gevallen 'Waitlist'. Ingewikkelder constructies kun je maken met de CASE functie. CASE Als-Dan logica CASE WHEN THEN <doe iets> […] [ELSE <doe iets>] END
CASE WHEN WHEN WHEN ELSE END
A.ENRL_STATUS_REASON A.ENRL_STATUS_REASON A.ENRL_STATUS_REASON 'Unknown status ' ||
= 'E' THEN 'Enrolled' = 'D' THEN 'Dropped' = 'W' THEN 'Waitlist' A.ENRL_STATUS_REASON
Als de waarde van A.ENRL_ACTION_REASON 'E' is komt hier 'Enrolled' uit, als hij 'D' is 'Dropped', als hij 'W' is 'Waitlist' en in alle andere gevallen 'Unknown status ' gevolgd door de waarde van A.ENRL_ACTION_REASON.
7.3
Maken van een expressie (opdracht 9)
Stap 1 Maak een query op de tabel SNS_EC_PERSOON, selecteer voor de studenten van wie de naam begint met 'Berg' de kolommen EMPLID, FIRST_NAME, LAST_NAME, NAME_ROYAL_PREFIX. Ga naar het tabje 'Expressies'.
Stap 2 Klik op de knop 'Expressie aan query toevoegen'
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
37 / 47
Stap 3 Denk na over de soort expressie en de lengte. In dit geval gaan we de voornaam en achternaam aan elkaar plakken. Deze velden zijn allebei 30 lang, plus wat extra ruimte voor de volgende opdracht, dus we zetten hem op Teken 100.
Stap 4 Kies via de link 'Veld toevoegen' het veld FIRST_NAME, typ vervolgens spatie, pipe, pipe, spatie, enkel aanhalingsteken (eventueel spatie om aanhalingsteken te krijgen, afhankelijk van je toetsenbordinstelling), spatie, enkel aanhalingsteken (eventueel spatie om aanhalingsteken te krijgen, afhankelijk van je toetsenbordinstelling), spatie, pipe, pipe. Als het goed is heb je dan de volgende constructie getypt: || ' ' ||. Het is dus de bedoeling om een spatie tussen voornaam en achternaam te krijgen. Kies via de link 'Veld toevoegen' het veld LAST_NAME. Zet vervolgens nog een spatie tussen de laatste pipe en A. LAST_NAME. Controleer of je dezelfde expressie nu in je scherm hebt staan als in bovenstaand plaatje. Klik op Ok. De expressie is nu klaar voor gebruik.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
38 / 47
Je hoeft niet per se de veldnamen via de optie 'Veld toevoegen' op te zoeken, je kunt ze ook gewoon intikken.
Stap 5 Om de expressie in de output van de query te krijgen moet je nog even op de link 'Als veld' klikken.
Je kunt eventueel nog de koptekst aanpassen naar iets mooiers. Stap 6 Sla de query op als 'XX_QUERYTRAINING_OPDRACHT_9' en voer hem uit.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
39 / 47
7.4
Complexe expressie (opdracht 10)
Pas de expressie aan zodat de tussenvoegsels tussen de FIRST_NAME en LAST_NAME komen te staan. Het uitgewerkte antwoord: Er zijn verschillende oplossingen mogelijk, gebruik de DECODE of de CASE functie. Met de DECODE functie: A.FIRST_NAME || ' ' || DECODE(A.NAME_ROYAL_PREFIX, ' ', '', A.NAME_ROYAL_PREFIX || ' ') || A.LAST_NAME Met de CASE functie: A.FIRST_NAME || ' ' || CASE WHEN A.NAME_ROYAL_PREFIX = ' ' THEN '' ELSE A.NAME_ROYAL_PREFIX || ' ' END || A.LAST_NAME En de uitkomst is dan als volgt:
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
40 / 47
7.5
Prompts in expressies
Het is ook mogelijk om prompts in expressies te gebruiken. Zo kun je bijvoorbeeld mutaties van de laatste dagen, waarbij je het aantal dagen via een prompt opgeeft, opvragen. Let op dat je bij het gebruik van prompts in query's deze altijd toevoegt via de link 'Prompt toevoegen' en niet gewoon intikt. Maak eerst de prompt voordat je aan de expressie begint. Voorbeeld Prompt: Soort: getal, Lengte: 2, Koptekst: 'Aantal dagen terug'. De overige velden kun je zo laten staan. Expressie:
Kies 'Groter dan' bij de 'Soort voorwaarde'. Kies 'Expressie' bij 'Soort expressie 2 kiezen'. Tik 'SYSDATE -' in het veld 'Expressie definiëren'. Kies 'Prompt toevoeg.', zoek je prompt en voeg hem toe.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
41 / 47
8 Outer joins (opdracht 11) In paragraaf 4.1 zijn de normale (inner) joins uitgelegd. Deze geven alleen resultaat terug als in beide tabellen waardes voorkomen. Echter, het is mogelijk dat dit niet het geval is, bijvoorbeeld als van een student geen land bekend is zal hij met een inner join tussen PERSONAL_DATA en COUNTRY_TBL wegvallen uit de resultaten. Dit wil je natuurlijk niet. De oplossing hiervoor is een outer join. Stap 1 Open de query uit opdracht 1, de query waarin alleen de tabel PERSONAL_DATA voor komt. Join deze met de COUNTRY_TBL. Join de tabellen niet door de link 'Join COUNTRY_TBL' achter het veld te gebruiken, maar door zelf de tabel COUNTRY_TBL te kiezen en een koppeling te leggen. Gebruik daarbij altijd de standaardjoin.
Stap 2 Toon de DESCR van het land. Pas de criteria aan zodat je de gegevens krijgt van de studenten 500132190 en 500647684 (gebruik hiervoor een 'In lijst' criterium). Zoals je ziet komt de laatste student niet uit de query, dit komt omdat er geen land bekend is van deze student. We gaan nu de query ombouwen naar een outer join. Dit doen we door de criteria van de join tussen de twee tabellen aan te passen.
Stap 3 Klik op de knop 'Bew.' achter A.COUNTRY.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
42 / 47
Stap 4 Verander bij 'Expressie 1' de veldnaam in A.COUNTRY door deze te selecteren via de lookup. Stap 5 Kies bij 'Soort expressie 2 kiezen' 'Expressie' en vul in het invulveld in: B.COUNTRY(+)
Dit plusje achter een kolom geeft aan dat dit record leeg kan zijn maar dat je dan toch de rij in de output wilt zien. Stap 6 Sla de query op als 'XX_ QUERYTRAINING_OPDRACHT_11' en voer hem uit. Je ziet nu beide studenten in de resultaten, bij student 500647684 is het veld omschrijving leeg. Voor tabellen die een effective date bevatten op de outer join tabel moet een speciale constructie gemaakt worden, voor de liefhebbers kan deze uitgelegd worden.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
43 / 47
9 Van alles en nog wat 9.1
Platte tabellen
Speciaal voor rapportages en query's zijn er speciale records die reeds samengevoegde data bevatten, deze records heten platte tabellen. Deze tabellen worden elke nacht door de nachtbatch gevuld maar kunnen ook door gebruikers op aanvraag via een run control ververst worden voor een groep studenten of op individuele basis. Als je in je query geen actuele data nodig hebt heeft het de voorkeur om deze platte tabellen te gebruiken. Dit kan enorm schelen in de snelheid van de query. Er zijn drie soorten platte tabellen: Inschrijfgegevens van studenten (persoonsgegevens, inschrijving op opleiding, etc.) Volggegevens van studenten (resultaten, diplomeringsgegevens, etc.) Gegevens niet gerelateerd aan studenten (studiegids, organisatiegegevens, opleidingsgegevens, etc.)
9.2
Related language
Alle groene velden in SIS zijn tweetalig, de hoofdtaal (base language) is Engels. Dit houdt in dat in de records de Engelse waardes opgenomen worden. Voor de Nederlandse waardes zijn zogenaamde related language tabellen aanwezig. SIS heeft bij query's één eigenaardigheid: als je direct op de base-table een query maakt toont hij de omschrijving van zo'n meertalig veld in de taal waarop SIS ingesteld staat. Dit kan dus betekenen dat je de Nederlandse omschrijving ziet in je output terwijl in het record toch echt de Engelse staat. Dit werkt zo voor alle records waar een related language record voor is. Er is een truc voor nodig om toch de Engelse omschrijving in de output te krijgen: maak voor het veld waarvan je de Engelse omschrijving wilt zien een expressie aan en zet deze in je veldlijst. Voor het tonen van de Nederlandse omschrijving, indien de gegevens tweetalig ingevuld zijn, moet je een join maken met het bijbehorende related language record. Hierbij kun je een eventuele effective date voorwaarde die SIS automatisch voor je aanmaakt vervangen door een normale join voorwaarde. Het kan voorkomen dat niet voor alle rijen in een record een related language is ingevuld, in deze gevallen moet je de related language tabel outer joinen. Dit treedt voornamelijk op bij de studiegids, vereistengroep, vereisten en vereistenregels.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
44 / 47
Bijlage A Hoe kom ik achter het juiste record en veld Firefox (Voorbeeld is met de Engelse versie). Klik met de rechtermuisknop op het veld dat je wilt weten, kies 'Inspect Element'.
Nu wordt het scherm donkerder en er verschijnt een popup met een omschrijving erin, het veld waar het om gaat is nog gewoon licht van kleur.
Je ziet hier in het groen staan 'CRSE_CATALOG_DESCR$0'. Het eerste deel is het record, het laatste deel is de veldnaam. In dit geval is het record dus 'CRSE_CATALOG' en het veld 'DESCR', de '$0' aan het eind kun je negeren. Soms is het wat lastig te zien wat wat is en moet je het een beetje uitproberen. Dit werkt meestal ook bij velden die geen invoermogelijkheid hebben, bijvoorbeeld studiedeel-ID op dit scherm.
Je ziet dat het hier om het veld 'CRSE_ID' gaat, ook weer uit het record 'CRSE_CATALOG'. Het is vaak zo dat op één scherm of tabblad de velden allemaal uit hetzelfde record komen maar dit is niet overal het geval.
Chrome (Voorbeeld is met de Nederlandse versie) Klik met de rechtermuisknop op het veld dat je wilt weten, kies 'Element inspecteren'. Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
45 / 47
Er opent zich nu onderaan het scherm een nieuw scherm.
En voor de duidelijkheid even een close-up van de regels waar het om gaat.
De naam van het record en het veld is hier op twee plaatsen terug te vinden, deze zijn rood omrand in deze afbeeldingen.
Internet Explorer 8 Helaas heeft IE 8 niet een inspect mogelijkheid, advies is om hiervoor Firefox of Chrome te gebruiken.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
46 / 47
Bijlage B Basis opzetten nieuwe query Het lastigste bij het maken van query's is de vraag om te zetten naar een werkende query. Het daadwerkelijk in SIS bouwen van een query is relatief simpel maar hoe kom je nu van je informatievraag naar de uiteindelijke query. Begin met op papier uit te schrijven wat je nu eigenlijk wilt zien, de velden en de criteria. Vervolgens kun je in SIS kijken op welke schermen je de informatie kunt vinden, vaak zijn dit meerdere schermen en soms staan niet eens alle gegevens op een scherm. Je kunt ook via het datamodeldocument kijken welke records aan elkaar zitten. Vervolgens kun je met de methode uit bijlage A uitzoeken welke records en velden je nodig hebt. Als je aanvullende gegevens nodig hebt kun je via het datamodel of via andere schermen in SIS kijken waar die gegevens vandaan komen. Ook kun je eens kijken bij bestaande query's die lijken op dat wat jij wil. Deze kun je namelijk wel gewoon bekijken in de query editor en dan heb je meteen een idee welke tabellen handig kunnen zijn.
Versie
: 1.0 - 7 maart 2013
Pagina Hogeschool van Amsterdam
:
47 / 47