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:

ange bildbeskrivning 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 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow