SQL för osteologer
publ. 2002 i Benbiten (vol. 15:2).

Structured Query Language är ett frågespråk utarbetat av IBM nån gång i början av 70-talet för att få ut information från databaser. När detta läses kommer säkert en del att fråga sig: varför skriva om SQL: ”det här är ju inget konstigt eller nytt?” Medan den andra gruppen är än mer frågande och undrar ”varför skall en osteolog bry sig om programmeringsspråk?”

SQL är det i dag vanligaste frågespråket som används för att sortera och gruppera information i databaser som t.ex. Access, SQL-server, Oracle, Sybase m.fl. Nedan kommer en kort guide hur man kommer igång med detta i Access, men även om man inte använder denna så kan man ha nytta av det som står här. Det gäller för övrigt även dem som aldrig använder en dator till sina analyser.

Efter denna lilla introduktion skall nu presenteras ett par mycket enkla exempel på frågor som man kan ställa till ett material. Alla exempel kommer att utgå ifrån tabell 1 nedan. Och för att inte krångla till det för mycket och hålla det hela på en rimlig nivå som är lätt att följa kommer endast enkla sorteringar och beräkningar att göras.

Tabell 1: Benlista

ArtBenslagSidaProximal delDistal delLängd (mm)
BosFemurSJaJa320
BosHumerusSNejJa
SusFemurSJaNej
SusHumerusDJaJa
CanisMc IIISJaJa
OvisRadiusDJaJa

Det första man skall fråga sig är: vad är det jag vill veta? Och sedan är det bara att på ett strukturerat sätt ställa upp hur man kan få fram denna information ur materialet. Den första frågan som nu kommer ställas till materialet är: ”vilka arter är funna på platsen?”. För att få struktur på frågan skrivs den ”gruppera alla poster i fältet arter”. Skrivs detta om till SQL lyder det:

SELECT art
FROM Benlista
GROUP BY art;


Den första raden innebär att det är fältet art som väljs att jobba ifrån, nästa rad säger att den återfinns i tabellen benlista och den sista raden att vi grupperar efter artfältet. Tabellen som vi får ut genom denna fråga ser nu ut som följer:

Bos
Sus
Canis
Ovis

Nästa steg är att skapa ett fält som räknar antalet poster i varje fält. Det vill säga en enkel NISP-tabell. För att skapa detta byts första raden ut mot:

SELECT art COUNT(art) as nisp;

Det vi nu lagt till är en kolumn där posterna räknas genom kommandot COUNT. Tillägget ”as nisp” innebär bara att den nya kolumnen skall heta nisp. Nu är resultatet som följer:

Artnisp
Bos3
Sus1
Canis1
Ovis1

Nu vill vi få en Nisp-lista för en art (bos) och få den uppdelad på benslagen. Vår kod ser ut som följer:

SELECT Ben, Count(Ben) AS AntalförBen
FROM Tabell2
GROUP BY Art, Ben
HAVING Art="Bos";

Det som nu skett är att vi väljer att visa, gruppera och räkna kolumnen ben i första raden. På tredje raden grupperas resultatet efter art och ben. Eftersom jag nu valt att bara visa ben från nötboskap måste jag skriva in en fjärde rad för att frågan skall kunna sortera ut ”Bos”. Resultatet av frågan blir nu:

BenNisp
Femur2
Humerus1

Vad är då vinsten med detta? Den stora vinsten som man gör med att skapa en fråga till en databas, är att man slipper slarvfel, som lätt blir följden när man räknar för hand. Det går oerhört mycket snabbare att få fram resultatet, och det är mycket enklare att jämföra eller slå ihop material mellan platser eller rutor. Och om man nu skulle hitta några andra ben vid ett senare tillfälle behöver man inte ägna mer tid åt sammanställningen, för frågan har du redan. Det är bara att ställa om den och du får ett nytt uppdaterat resultat. Jag nämnde ovan att alla kan ha nytta av ett strukturerat tänkande vad gäller frågor oavsett om man använder dator eller ej. Man skall veta att en dator är stendum och inte kan göra något som den inte är tillsagd att göra. Detta leder till att man i minsta detalj måste tänka efter hur man räknar ut sina värden. Och i dessa tider då en standard för hur osteologiskt material skall hanteras lyser med sin frånvaro är det extra viktigt att strukturera tankarna så att andra förstår vad det är som görs.

Kom igång med Access

Att här beskriva hur Access fungerar i detalj hinns inte med, men jag skall ge en liten fingervisning. När programmet öppnas finns en meny som liknar den nedan. Börja med att skapa en tabell (använd gärna guiderna i programmet, de är mycket bra och lätta att förstå). För att skapa en fråga välj: infoga i menyn och sedan fråga. Nu syns ett fönster som liknar bilden nedan. Det är ett grafiskt gränssnitt till SQL-språket. För att få den textbaserade vyn så är det bara att i visamenyn välja ”SQL”, för att se resultatet av frågan väljer man datablad ur visamenyn.

Jag vill gärna ha kommentarer till denna artikel och om det finns intresse för mer användbara SQL-satser och metoder. Skriv till krakfot@hotmail.com.