Ik loop tegen een vreemd probleem aan. Ik heb een Access query die dit soort resultaten oplevert:
Daarbij heb ik een tabel met labels die bij die ID 1 en ID 2 velden horen:
Alle waarden die in de eerste tabel als ID 1 of als ID 2 voorkomen, komen als ID voor in de Labels tabel. Daarnaast zitten er in deze Labels tabel nog veel meer records die niet in de eerste query/tabel voorkomen.
Wat ik nu wil is een selectie maken uit de Labels tabel op basis van welke ID's voorkomen in de tabel met waardes. Ik had daarvoor eerst het idee om gebruik te maken van een subquery:
Dit blijkt Access volledig op z'n plaat te helpen, terwijl de query prima en snel werkt met slechts één van de twee WHERE voorwaarden.
Een alternatieve benadering was een UNION:
Dit heeft exact hetzelfde probleem als de eerste poging helaas.
Heeft iemand nog een ander idee hoe ik dit zou kunnen doen? Ik zou het heel graag in één query hebben.
| ID 1 | ID 2 | value |
|---|---|---|
| 1 | 2 | 0.23261 |
| 1 | 3 | 0.0016515 |
| 4 | 12 | 0.24245 |
| 5 | 9 | 1.0 |
| 9 | 17 | 0.3243 |
Daarbij heb ik een tabel met labels die bij die ID 1 en ID 2 velden horen:
| ID | label |
|---|---|
| 1 | Een label |
| 2 | Een ander label |
| 3 | Weer een ander label |
Alle waarden die in de eerste tabel als ID 1 of als ID 2 voorkomen, komen als ID voor in de Labels tabel. Daarnaast zitten er in deze Labels tabel nog veel meer records die niet in de eerste query/tabel voorkomen.
Wat ik nu wil is een selectie maken uit de Labels tabel op basis van welke ID's voorkomen in de tabel met waardes. Ik had daarvoor eerst het idee om gebruik te maken van een subquery:
SQL:
1
2
3
4
5
| SELECT [Labels].ID, [Labels].label FROM [Labels] WHERE ( (([Labels].ID) In (SELECT [values].[ID 1] FROM [values])) OR (([Labels].ID) In (SELECT [values].[ID 2] FROM [values])) ; |
Dit blijkt Access volledig op z'n plaat te helpen, terwijl de query prima en snel werkt met slechts één van de twee WHERE voorwaarden.
Een alternatieve benadering was een UNION:
SQL:
1
2
3
4
5
6
7
8
9
| SELECT [Labels].ID, [Labels].label FROM [Labels] WHERE ( (([Labels].ID) In (SELECT [values].[ID 1] FROM [values])) UNION SELECT [Labels].ID, [Labels].label FROM [Labels] WHERE ( (([Labels].ID) In (SELECT [values].[ID 2] FROM [values])) |
Dit heeft exact hetzelfde probleem als de eerste poging helaas.
Heeft iemand nog een ander idee hoe ik dit zou kunnen doen? Ik zou het heel graag in één query hebben.
My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant