In een SQL query vul ik een veld vanuit een alternatieve bron als de oorspronkelijk bron leeg is en alle waarden stop ik in één kolom. Nu wil ik op deze kolom een WHERE clausule los laten:
BRON
EXTRA
Hier laat ik het volgende SQL-statement op los.
Okay, misschien niet foutloos, maar de strekking is duidelijk. In de 'echte' omgeving is dat al werkend. Deze geeft het volgende resultaat:
Query output
Nu het (voor mij) tricky gedeelte: Hoe zorg ik ervoor de Amsterdam eruit wordt gefilterd zonder de rest (bijv. lege velden) te verliezen?
- Ik kan er geen INNER JOIN van maken, want dan verlies ik info.
- Een WHERE clausule op de extra tabel is geen optie; dan kun je er net zo goed een INNER JOIN van maken.
- Een extra clausule in de LEFT JOIN (AND NOT LIKE 'Amst%') is geen optie; ik krijg alleen maar extra lege records terug op die plekken.
Is het mogelijk 'Samengestelde_Plaats' in de WHERE clausule op te nemen? Dit is mij nl. niet gelukt. Of zijn er andere manieren om hier mee om te gaan?
BRON
Serienr | Plaats |
---|---|
111 | Amsterdam |
222 | |
333 | |
444 |
EXTRA
Serienr | Plaats |
---|---|
333 | Amsterdam |
444 | Rotterdam |
Hier laat ik het volgende SQL-statement op los.
code:
1
2
3
4
5
6
7
| SELECT Bron.Serienr, CASE (Bron.Plaats) WHEN '' THEN Extra.Plaats ELSE Bron.Plaats END AS [Samengestelde_Plaats] FROM Bron LEFT JOIN Extra ON Extra.Serienr = Bron.Serienr |
Okay, misschien niet foutloos, maar de strekking is duidelijk. In de 'echte' omgeving is dat al werkend. Deze geeft het volgende resultaat:
Query output
Serienr | Samengestelde_Plaats |
---|---|
111 | Amsterdam |
222 | |
333 | Amsterdam |
444 | Rotterdam |
Nu het (voor mij) tricky gedeelte: Hoe zorg ik ervoor de Amsterdam eruit wordt gefilterd zonder de rest (bijv. lege velden) te verliezen?
- Ik kan er geen INNER JOIN van maken, want dan verlies ik info.
- Een WHERE clausule op de extra tabel is geen optie; dan kun je er net zo goed een INNER JOIN van maken.
- Een extra clausule in de LEFT JOIN (AND NOT LIKE 'Amst%') is geen optie; ik krijg alleen maar extra lege records terug op die plekken.
Is het mogelijk 'Samengestelde_Plaats' in de WHERE clausule op te nemen? Dit is mij nl. niet gelukt. Of zijn er andere manieren om hier mee om te gaan?