Binnen sql loop ik toch vaak tegen het probleem aan, dat ik de eerste records van een bepaalde conditie terug wil krijgen. Nu weet ik dat het mogelijk is om dit genest opte lossen. Is het ook mogelijk om dit op een andere manier op te lossen?
Momenteel ben ik dit aan het testen op Oracle, maar mocht iemand weten hoe je het elegant op een ander DBMS zou oplossen, dan zou ik het ook graag weten.
Ik heb de volgende tabel in sql:
In deze tabel heb ik voor de gelegenheid de volgende data gestopt:
Met het volgende query kan ik de gegevens ophalen:
Het gewenste resultaat dat ik terug wil hebben is het volgende:
Omdat ik dit generiek wil gebruiken, dus op meerdere tabellen met verschillende velden, zoek ik een zo generiek mogelijk antwoord. Weet iemand hoe ik dit zonder nesting kan oplossen?
Momenteel ben ik dit aan het testen op Oracle, maar mocht iemand weten hoe je het elegant op een ander DBMS zou oplossen, dan zou ik het ook graag weten.
Ik heb de volgende tabel in sql:
code:
1
2
3
4
5
6
7
8
| CREATE TABLE TEST ( ID INTEGER NOT NULL, VERSION INTEGER DEFAULT 0 NOT NULL, VALUE INTEGER NOT NULL, ); CREATE UNIQUE INDEX PK_TEST ON TEST (ID, VERSION) ; |
In deze tabel heb ik voor de gelegenheid de volgende data gestopt:
code:
1
2
3
4
5
| id version value 1 1 11 1 2 12 2 1 21 2 2 22 |
Met het volgende query kan ik de gegevens ophalen:
code:
1
| select * from test a where version = (select max(version) from test b where a.id = b.id) |
Het gewenste resultaat dat ik terug wil hebben is het volgende:
code:
1
2
3
| id version value 1 2 12 2 2 22 |
Omdat ik dit generiek wil gebruiken, dus op meerdere tabellen met verschillende velden, zoek ik een zo generiek mogelijk antwoord. Weet iemand hoe ik dit zonder nesting kan oplossen?