Als uw query's niet hard genoeg werken, kunt u de resultaten beter richten door enkele eenvoudige SQL-instructies toe te voegen. Laten we eens kijken naar een paar typen SQL-instructies en de componenten of onderdelen die u kunt bewerken om de gewenste resultaten te verkrijgen.
In dit artikel
- Een Select-instructie maken
- De SELECT-component aanpassen
- De FROM-component aanpassen
- De WHERE-component aanpassen
- Aanpassen met de operator UNION
Een Select-instructie maken
Een SQL-selectie-instructie heeft twee tot drie componenten. Met de SELECT-component wordt aangegeven waar de database moet zoeken naar de gegevens en wordt gevraagd een specifiek resultaat te retourneren.
Opmerking
SELECT-instructies eindigen altijd op een puntkomma (;) aan het einde van de laatste component of op een afzonderlijke regel aan het einde van de SQL-instructie.
In de volgende select-instructie wordt in 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 Stad.
De bovenstaande query bevat drie componenten: SELECT, FROM en WHERE.
1. okt. De SELECT-component bevat de kolommen die de gegevens bevatten die u wilt gebruiken, en heeft een operator (SELECT), gevolgd door twee aanduidingen (E-mail Address en Company). Als een aanduiding spaties of speciale tekens bevat (zoals 'E-mailadres'), plaatst u de aanduiding tussen vierkante haken.
2. okt. De FROM-component identificeert de brontabel. In dit voorbeeld heeft het een operator (FROM), gevolgd door een aanduiding (Contacts).
3. okt. De WHERE-component is een optionele component. Het voorbeeld bevat een operator (WHERE), gevolgd door een expressie (City="Seattle").
Zie Een eenvoudige selectiequery maken voor meer informatie over selectiequery's.
Hier volgt een lijst met algemene SQL-componenten:
| SQL-component | Wat gebeurt er | 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 veelvoorkomende SQL-termen.
Naar boven
De SELECT-component aanpassen
| Aanpassen | Voorbeeld |
|---|---|
| Om alleen de unieke waarden weer te geven. Gebruik het sleutelwoord DISTINCT in uw SELECT-component. |
Als uw klanten bijvoorbeeld verschillende filialen hebben en sommigen hetzelfde telefoonnummer hebben, en u een telefoonnummer slechts eenmaal wilt zien, ziet uw SELECT-component er ongeveer als volgt uit:SELECT DISTINCT [txtCustomerPhone] |
| De manier wijzigen waarop een id in de gegevensbladweergave wordt weergegeven, ter verbetering van de leesbaarheid. Gebruik de operator AS (een sleutelwoord waarmee een actie wordt aangeduid of gewijzigd) met een veldalias in uw SELECT-component. Een veldalias is een naam die u aan een veld toewijst, zodat de resultaten leesbaarder worden. |
SELECT [txtCustPhone] AS [Telefoon klant] |
De FROM-component aanpassen
| Aanpassen | Voorbeeld |
|---|---|
| U kunt een tabelalias of een andere naam die u aan een tabel toewijst, in een select-instructie gebruiken. Een tabelalias is handig als de naam van de tabelnaam lang is, vooral wanneer er meerdere velden met dezelfde naam uit verschillende tabellen zijn. | Als u gegevens wilt selecteren uit twee velden met beide de naam ID, komt het ene uit de tabel tblCustomer en het andere uit de tabel tblOrder: SELECT [tblCustomer]. [ID], [tblOrder]. [ID] Gebruik de operator AS om tabelaliassen te definiëren in de FROM-component: FROM [tblCustomer] AS [C], [tblOrder] AS [O] U kunt deze tabelaliassen vervolgens als volgt gebruiken in uw SELECT-component:SELECT [C]. [ID], [O]. [ID] |
| Gebruik joins om paren records uit twee gegevensbronnen te combineren tot één resultaat of om op te geven of records uit de tabellen moeten worden opgenomen als er geen overeenkomende record in de gerelateerde tabel voorkomt. Voeg de tabellen samen, zodat de query de items uit de tabellen combineert en items worden uitgesloten wanneer er geen overeenkomende record in de andere tabel is |
De FROM-component ziet er dan bijvoorbeeld als volgt uit:FROM [tblCustomer] INNER JOIN [tblOrder] ON [tblCustomer]. [CustomerID]=[tblOrder]. [Klantnummer] |
Over het gebruik van joins
Er zijn twee soorten joins: inner joins en outer joins. Inner joins komen vaker voor in query's. Wanneer u een query met een inner join uitvoert, worden alleen die items weergegeven waarvoor in beide samengevoegde tabellen een waarde bestaat.
Met outer joins kunt u opgeven of er gegevens moeten worden opgenomen als er geen gedeelde waarde bestaat. Outer joins zijn directioneel, wat betekent dat u kunt opgeven of alle records uit de eerste tabel die in de join is opgegeven, moeten worden opgenomen (een linker-join), of dat alle records uit de tweede tabel in de join moeten worden opgenomen (een rechter-join). Een outer join heeft de volgende SQL-syntaxis:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Zie voor meer informatie over het gebruik van joins in een query Tabellen en query's koppelen.
Naar boven
De WHERE-component aanpassen
De WHERE-component bevat criteria waarmee het aantal items dat in een query wordt geretourneerd, wordt beperkt. Voorbeelden bekijken van querycriteria en hoe ze werken.
Een voorbeeld van de manier waarop u de WHERE-basiscomponent kunt aanpassen, is het beperken van de resultaten van een query. Stel dat u het telefoonnummer van een klant wilt vinden en alleen zijn achternaam kunt onthouden als Bagel. In dit voorbeeld worden de achternamen opgeslagen in een LastName-veld, dus de SQL-syntaxis:
WHERE [LastName]='Bagel'
Gebruik de WHERE-component ook om gegevensbronnen te combineren voor kolommen met overeenkomende gegevens, maar verschillende gegevenstypen. Dit is handig omdat u geen join kunt maken tussen velden met verschillende gegevenstypen. Het ene veld als criterium voor het andere veld gebruiken, met het sleutelwoord LIKE . Als u bijvoorbeeld gegevens uit de tabel Activa en de tabel Werknemers alleen wilt gebruiken wanneer het veld Activatype in het veld Activatype van de tabel Activa het getal 3 bevat in het veld Hoeveelheid van de tabel Werknemers, ziet uw WHERE-component er als volgt uit:
WHERE field1 LIKE field2
Belangrijk
U kunt geen criteria opgeven voor een veld dat met een statistische functie in een WHERE-component wordt gebruikt. In plaats daarvan gebruikt u een HAVING-component om criteria voor velden met statistische functies op te geven.
Naar boven
Aanpassen met de operator UNION
Gebruik de operator UNION als u de resultaten van verschillende vergelijkbare selectiequery's gecombineerd wilt bekijken. Stel dat uw database 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 de tabel Products waarborginformatie bevat en de tabel Services garantie-informatie, zijn de basisgegevens hetzelfde. U kunt als volgt een samenvoegquery gebruiken om de drie velden uit de twee tabellen 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 corresponderende velden in één uitvoerveld gecombineerd. Gebruik de operator ALL om dubbele rijen in de resultaten op te nemen.
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 samengevoegd resultaat uit meerdere query's weer te geven voor meer informatie over samenvoegquery's.
Naar boven