ms-access
Få åtkomst till SQL
Sök…
Introduktion till Access SQL
När du använder Access kan du hämta data med frågor. Dessa frågor byggs med SQL (Structured Query Language). Att förstå SQL är viktigt eftersom det kan hjälpa till att skapa bättre och mer användbara frågor.
När du skapar frågor i Access kan du växla till "SQL View". Ett exempel på en "välj" -fråga visas här:
Union (Merge) Frågor
När du vill kombinera resultaten från flera tabeller eller frågor med liknande fält tillsammans till en enda resulterande datauppsättning utan att utföra några relationella sammanfogningar (dvs. att du vill lista ett datasätt direkt efter det andra) använder du en UNION fråga. Det kan dock noteras att dessa frågor måste skapas manuellt i SQL View.
Syntax för en UNION fråga är
SELECT
floatingpoint_field AS floatptfld,
text_field
FROM first_table
UNION
SELECT
integer_field,
decimal_field
FROM a_saved_query
UNION
SELECT
1.0,
"hi there Jack"
och kommer att returnera ett floatptfld text_field (kolumn): floatptfld och text_field
Det är av avgörande betydelse att datatyperna (och datastiler) för fält som sedan slås samman är kompatibla med den första frågan i serien. Med andra ord, om den första SELECT frågan genererar ett nummer för den första kolumnen, måste den andra frågan också returnera ett nummer i den första kolumnen. Förutom att matcha typer av fält i ordning måste SELECT satserna returnera samma antal fält. Namn på fälten i det resulterande databladet ärvs från den första tabelldefinitionen.
Följande fråga skulle INTE vara laglig, eftersom text inte kan förvandlas till decimaldata och inte heller kan flytande punktnummer konverteras till heltal (utan uttrycklig avkortning eller avrundning och typgjutning).
SELECT
integer_field AS this_really_wont_turn_out_well,
decimal_field
FROM a_saved_query
UNION
SELECT
floatingpoint_field,
text_field
FROM first_table
Funktionen COUNT ()
Du kan använda COUNT () -funktionen för att returnera antalet poster som matchar en fråga. Följande tabell "Anställd" innehåller anställds-ID-nummer och deras tillhörande chefs-ID-nummer.
| Anställnings-ID | Manager_ID |
|---|---|
| 12 | 37 |
| 22 | 37 |
| 37 | 63 |
| 42 | 45 |
| 45 | 63 |
| 57 | 45 |
| 59 | 45 |
| 63 |
Ett COUNT () uttalande kan användas för att ta reda på hur många anställda som har en specifik chef:
SELECT COUNT(*) AS CNT FROM Employees WHERE Employee.Manager_ID = 37;
avkastning
| CNT |
|---|
2
Funktionen kan också kombineras i mer komplicerade frågor. För att ta reda på hur många anställda som direkt övervakas av en viss person kan följande tillämpas:
SELECT T1.Employee_ID,
(SELECT COUNT(*) AS CNT FROM Employees AS T2 WHERE T2.Manager_ID =
T1.Employee_ID) AS Supervised_Count
FROM Employees AS T1;
avkastning:
| Anställnings-ID | Supervised_Count |
|---|---|
| 12 | 0 |
| 22 | 0 |
| 37 | 2 |
| 42 | 0 |
| 45 | 3 |
| 57 | 0 |
| 59 | 0 |
| 63 | 2 |
MSDN-dokumentation kan hittas här .
