⊗pyPmDOGD 123 of 129 menu

Gegevens ophalen uit gerelateerde tabellen in Python

Laten we een query maken die alle gebruikers ophaalt samen met hun steden. Hiervoor is de opdracht LEFT JOIN nodig:

De syntaxis ziet er als volgt uit:

SELECT velden FROM tabel_naam LEFT JOIN gerelateerde_tabel_naam ON koppel_voorwaarde WHERE selectie_voorwaarde

Laten we de afzonderlijke onderdelen van de syntaxis van deze opdracht bekijken.

Velden

Omdat de selectie uit meerdere tabellen komt, werkt het selecteren van alle velden met * niet. De volgende query selecteert velden alleen uit de hoofdtable, maar niet uit de gerelateerde tabel:

SELECT *

Om gegevens uit alle tabellen te selecteren, moet je voor * de tabelnaam voor de selectie opgeven:

SELECT users.*, cities.*

Of je kunt de gewenste velden opsommen met vermelding van de tabelnaam ervoor:

SELECT users.name, cities.name

Deze twee methoden hebben een probleem. Het zit zo, dat als velden in de tabellen dezelfde namen hebben, er in de Python-lijst een naamconflict ontstaat en er maar één veld overblijft, en het tweede veld niet aanwezig zal zijn.

Om het probleem op te lossen moeten conflicterende namen worden hernoemd met de opdracht as:

SELECT users.name, cities.name as city_name

Koppeling

Na de opdracht ON moeten we de velden uit de twee tabellen opgeven, waarmee de koppeling wordt gemaakt. In ons geval is dit het veld id uit de tabel met steden en het veld city_id uit de tabel met gebruikers:

ON cities.id=users.city_id

Query

Uiteindelijk ziet de query die de gebruikers samen met hun steden ophaalt er als volgt uit:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

Praktische opdrachten

Stel je hebt een tabel met producten en een tabel met hun categorieën. Schrijf een query, die de productnamen ophaalt samen met hun categorieën.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren