Det här är en av artiklarna i en artikelserie om Access SQL. I den här artikeln beskrivs hur du skriver en FROM-sats och du får exempel på olika tekniker du kan använda i en FROM-sats.
Du anger datakällor i FROM-satsen i ett SELECT-uttryck. FROM-satsen kan också innehålla en JOIN-åtgärd. Du kan använda en JOIN-åtgärd till att matcha och kombinera data från två datakällor, till exempel två tabeller eller en tabell och en fråga.
En översikt över Access SQL ges i artikeln Access SQL: grundläggande begrepp, ordlista och syntax.
Artikelinnehåll
Ange datakällor
I ett SELECT-uttryck används FROM-satsen till att ange vilka tabeller eller frågor som innehåller de data som ska användas i SELECT-satsen.
Anta att du vill veta telefonnumret till en viss kund. Om tabellen som innehåller det fält som lagrar dessa data kallas tblCustomer skulle FROM-satsen se ut ungefär så här:
FROM tblCustomer
Du kan omge namnet med hakparenteser. Om namnet inte innehåller blanksteg eller specialtecken (som skiljetecken) är hakparenteserna valfria. Om namnet innehåller blanksteg eller specialtecken måste du använda hakparenteser.
Tips: Ett namn som innehåller blanksteg är lättare att läsa och kan spara tid när du utformar formulär och rapporter, men du kan behöva skriva mer när du skriver SQL-uttryck. Tänk på det här när du namnger objekt i Access-databasen.
Använda ersättningsnamn för datakällor
Du kan använda ett annat namn för att referera till en tabell i ett SELECT-uttryck med hjälp av ett tabellalias i FROM-satsen. Ett tabellalias är ett namn som du tilldelar en datakälla i en fråga när du använder ett uttryck som datakälla, eller när du vill göra det enklare att skriva och läsa SQL-uttrycket. Detta kan vara särskilt användbart om namnet på datakällan är långt eller svårt att skriva, särskilt när det finns flera fält som har samma namn i olika tabeller.
Om du till exempel vill välja data från två fält som båda heter ID, där ett kommer från tabellen tblCustomer och det andra kommer från tabellen tblOrder, kan SELECT-satsen se ut så här:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Frågan kan bli enklare att skriva med hjälp av tabellalias i FROM-satsen. Med tabellalias kan FROM-satsen se ut så här:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Sedan kan du använda de här tabellaliasen i SELECT-satsen på följande sätt:
SELECT [C].[ID], [O].[ID]
Obs!: När du använder ett tabellalias kan du referera till tabellen i SQL-uttrycket antingen med aliaset eller med det fullständiga tabellnamnet.
Koppla samman relaterade data
När du behöver kombinera par med poster från två datakällor till en enda post i ett frågeresultat kan du utföra en koppling. En koppling är en SQL-åtgärd som anger hur två datakällor är relaterade, och om data från en av källorna ska tas med om det inte finns några motsvarande data från den andra källan.
När du ska kombinera informationen från två datakällor utför du en kopplingsåtgärd på fältet de har gemensamt. När värdena som lagras i det här fältet matchar kombineras data från posterna i resultatet.
Förutom att kombinera data kan du också använda en koppling till att ange om du vill ta med poster från en av tabellerna om det inte finns någon motsvarande post i den relaterade tabellen.
Anta till exempel att du vill använda data från två tabeller i en fråga: tblCustomer och tblOrder. De två tabellerna innehåller båda fältet CustomerID, som identifierar en kund. Varje post i tabellen tblCustomer kan ha en eller flera motsvarande poster i tabellen tblOrder, och motsvarande värden kan fastställas med hjälp av värden i fältet CustomerID.
Om du vill koppla tabellerna så att frågan kombinerar posterna från tabellerna, men utesluter poster från endera tabell om det inte finns någon motsvarande post i den andra tabellen, kan FROM-satsen se ut ungefär så här (radbrytningar används för läsbarhet):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
I Access görs kopplingar i FROM-satsen i ett SELECT-uttryck. Det finns två typer av kopplingar: inre kopplingar och yttre kopplingar. I följande avsnitt beskrivs dessa två typer av kopplingar.
Inre kopplingar
Inre kopplingar är den vanligaste typen av koppling. När du kör en fråga med en inre koppling tas bara poster med i frågeresultatet när samma värde finns i båda de kopplade tabellerna.
En inre koppling har följande syntax (radbrytningar används för läsbarhet):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
I följande tabell beskrivs de olika delarna i en INNER JOIN-åtgärd.
Del |
Beskrivning |
tabell1, tabell2 |
Namnen på de tabeller som innehåller de poster som ska kombineras. |
fält1, fält2 |
Namnen på de fält som ska kombineras. Om fälten inte är numeriska måste fälten ha samma datatyp och innehålla samma information, men de behöver inte ha samma namn. |
operator |
En jämförelseoperator: "=," "<," ">," "<=," ">=" eller "<>." |
Yttre koppling
Yttre kopplingar liknar inre kopplingar eftersom de anger hur information från två källor ska kombineras i en fråga. De är olika eftersom de också anger om data ska tas med när det inte finns något gemensamt värde. Yttre kopplingar är riktade: du kan ange om du vill ta med alla poster från den första datakällan som anges i kopplingen (kallas för en vänsterkoppling), eller om du vill ta med alla poster från den andra datakällan i kopplingen (kallas för en högerkoppling).
En yttre koppling har följande syntax:
FROM tabell1 [ LEFT | RIGHT ] JOIN tabell2
ON tabell1.fält1 operator tabell2.fält2I följande tabell beskrivs de olika delarna i LEFT JOIN- och RIGHT JOIN-åtgärder.
Del |
Beskrivning |
tabell1, tabell2 |
Namnen på de tabeller som innehåller de poster som ska kombineras. |
fält1, fält2 |
Namnen på de fält som ska kopplas. Fälten måste ha samma datatyp och innehålla samma typ av data, men de behöver inte ha samma namn. |
operator |
En jämförelseoperator: "=," "<," ">," "<=," ">=" eller "<>." |
Mer information om kopplingar finns i artikeln Koppla tabeller och frågor.