Als uw query's niet hard genoeg werken, kunt u enkele eenvoudige SQL-instructies toevoegen om uw resultaten te concentreren. Laten we eens kijken naar een paar typen SQL-instructies en de componenten of onderdelen die u kunt bewerken om de gewenste resultaten te krijgen.
Opmerking: Dit artikel is niet van toepassing op Access-web-apps, het type database dat u met Access ontwerpt en online publiceert.
In dit artikel
Een select-instructie maken
Een SQL-selectie-instructie heeft twee tot drie componenten. De SELECT-component vertelt de database waar de gegevens moeten worden gezocht en vraagt deze om een specifiek resultaat te retourneren.
Opmerking: SELECT-instructies eindigen altijd met een puntkomma (;) aan het einde van de laatste component of op een regel aan het einde van de SQL-instructie.
Met de volgende selectie-instructie wordt Access gevraagd om informatie op te halen uit de kolommen E-mailadres en Bedrijf, uit de tabel Contactpersonen, met name waar 'Seattle' wordt gevonden in de kolom Plaats.
De bovenstaande query heeft drie componenten SELECT, FROM en WHERE.
1. De SELECT-component bevat de kolommen met de gegevens die u wilt gebruiken en bevat een operator (SELECT), gevolgd door twee id's (E-mailadres en Bedrijf). Als een id spaties of speciale tekens bevat (zoals 'E-mailadres'), plaatst u de id tussen vierkante haken.
2. De FROM-component identificeert de brontabel. In dit voorbeeld heeft het een operator (FROM), gevolgd door een id (Contactpersonen).
3. De WHERE-component is een optionele component. Het voorbeeld bevat een operator (WHERE) gevolgd door een expressie (Plaats="Seattle").
Zie Een eenvoudige selectiequery maken voor meer informatie over selectiequery's.
Hier volgt een lijst met algemene SQL-componenten:
SQL-component |
Resultaat |
Vereist ? |
SELECT |
Vermelding van de velden die de gewenste gegevens bevatten. |
Ja |
FROM |
Vermelding van de tabellen met de velden die in de SELECT-component worden vermeld. |
Ja |
WHERE |
Aanduiding van veldcriteria waaraan moet worden voldaan door elke record die in de resultaten moet worden opgenomen. |
Nee |
ORDER BY |
Aanduiding hoe de resultaten worden gesorteerd. |
Nee |
GROUP BY |
In een SQL-instructie met statistische functies vermelding van de velden die niet in de SELECT-component worden samengevat. |
Alleen als er sprake is van dergelijke velden |
HAVING |
In een SQL-instructie met statistische functies vermelding van de voorwaarden die gelden voor velden die in de SELECT-component worden samengevat. |
Nee |
Elke SQL-component bestaat uit termen. Hier volgt een lijst met enkele algemene SQL-termen.
SQL-term |
Definitie |
Voorbeeld |
aanduiding |
Een naam die u gebruikt om een databaseobject te identificeren, zoals de kolomnaam. |
[E-mailadres] en Bedrijf |
operator |
Een sleutelwoord waarmee een actie wordt aangeduid of gewijzigd. |
AS |
constante |
Een waarde die niet wordt gewijzigd, zoals een getal of NULL. |
42 |
expressie |
Een combinatie van aanduidingen, operators, constanten en functies die leidt tot één enkele waarde. |
>= Producten.[Prijs per eenheid] |
De SELECT-component aanpassen
Aanpassen |
Voorbeeld |
Als u alleen de afzonderlijke waarden wilt zien. Gebruik het sleutelwoord DISTINCT in uw SELECT-component. |
Als uw klanten bijvoorbeeld afkomstig zijn van verschillende filialen en sommige hetzelfde telefoonnummer hebben en u slechts één keer een telefoonnummer wilt zien, ziet uw SELECT-component er als volgt uit:
|
De manier wijzigen waarop een id wordt weergegeven in de gegevensbladweergave om de leesbaarheid te verbeteren. Gebruik de as-operator (een trefwoord dat een actie vertegenwoordigt of een actie wijzigt) met een veldalias in uw SELECT-component. Een veldalias is een naam die u toewijst aan een veld om de resultaten beter leesbaar te maken. |
|
De FROM-component aanpassen
Aanpassen |
Voorbeeld |
U kunt een tabelalias of een andere naam gebruiken die u aan een tabel toewijst in een select-instructie. Een tabelalias is handig als de naam van de tabelnaam lang is, met name wanneer u meerdere velden hebt met dezelfde naam uit verschillende tabellen. |
Gegevens selecteren uit twee velden, beide benoemde id, waarvan één afkomstig is uit de tabel tblCustomer en de andere uit de tabel tblOrder:
Gebruik de AS-operator om tabelaliassen te definiëren in de FROM-component:
Vervolgens kunt u deze tabelaliassen als volgt gebruiken in uw SELECT-component:
|
Gebruik joins om paren van records uit twee gegevensbronnen te combineren tot één resultaat of om op te geven of records uit een van de tabellen moeten worden opgenomen als de gerelateerde tabel geen overeenkomstige record bevat. Voeg de tabellen samen, zodat de query de items uit de tabellen combineert en items uitsluit wanneer er geen overeenkomstige record in de andere tabel is |
De FROM-component kan er als volgt uitzien:
|
Over het gebruik van joins
Er zijn twee typen joins, inner en outer joins. Inner joins komen vaker voor in query's. Wanneer u een query uitvoert met een inner join, worden in het resultaat alleen de items weergegeven waarvoor een gemeenschappelijke waarde bestaat in beide gekoppelde tabellen.
Outer joins geven aan of gegevens moeten worden opgenomen waarvoor geen gemeenschappelijke waarde bestaat. Outer joins zijn directioneel, wat betekent dat u kunt opgeven of u alle records uit de eerste tabel wilt opnemen die is opgegeven in de join (een left join genoemd), of dat u alle records uit de tweede tabel in de join wilt opnemen (een zogenaamde right join). Een outer join heeft de volgende SQL-syntaxis:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Zie Tabellen en query's koppelen voor meer informatie over het gebruik van joins in een query.
De WHERE-component aanpassen
De WHERE-component bevat criteria waarmee u het aantal items kunt beperken dat in een query wordt geretourneerd. Bekijk voorbeelden van querycriteria en hoe deze werken.
Een voorbeeld van hoe u de basis-WHERE-component kunt aanpassen, is om de resultaten van een query te beperken. Stel dat u het telefoonnummer van een klant wilt vinden en alleen zijn achternaam als Bagel kunt onthouden. In dit voorbeeld worden de achternamen opgeslagen in het veld LastName, dus de SQL-syntaxis is:
WHERE [LastName]='Bagel'
Gebruik de WHERE-component ook om gegevensbronnen te combineren voor kolommen met overeenkomende gegevens, maar met verschillende gegevenstypen. Dit is handig omdat u geen join kunt maken tussen velden met verschillende gegevenstypen. Gebruik het ene veld als criterium voor het andere veld, met het trefwoord LIKE . Als u bijvoorbeeld gegevens uit een tabel Activa en De tabel Werknemers wilt gebruiken, ziet uw WHERE-component er als volgt uit als het type asset in het veld Assettype van de tabel Activa het getal 3 heeft in het veld Hoeveelheid van de tabel Werknemers:
WHERE field1 LIKE field2
Belangrijk: U kunt geen criteria opgeven voor een veld dat wordt gebruikt met een statistische functie in een WHERE-component. In plaats daarvan gebruikt u een HAVING-component om criteria voor velden met statistische functies op te geven.
Aanpassen met de UNION-operator
Gebruik de operator UNION als u een gecombineerde weergave van resultaten van verschillende vergelijkbare selectiequery's wilt zien. Als uw database bijvoorbeeld een tabel Producten en een tabel Services bevat en deze beide drie velden hebben: exclusieve aanbieding of product of service, prijs, garantie of garantie. Hoewel in de tabel Producten garantiegegevens worden opgeslagen en in de tabel Services worden garantiegegevens opgeslagen, is de basisinformatie hetzelfde. U kunt een samenvoegquery gebruiken om de drie velden uit de twee tabellen als volgt te combineren:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Wanneer u de query uitvoert, worden gegevens uit elke set bijbehorende velden gecombineerd in één uitvoerveld. Als u dubbele rijen in de resultaten wilt opnemen, gebruikt u de operator ALL.
Opmerking: De instructie Select moet hetzelfde aantal uitvoervelden hebben, in dezelfde volgorde en met dezelfde of compatibele gegevenstypen. Voor een samenvoegquery zijn de gegevenstypen Numeriek en Tekst compatibel.
Zie Een samenvoegquery gebruiken om een uniform resultaat van meerdere query's weer te geven voor meer informatie over Union-query's.