Mijn vraag:
Het is een bekend issue, maar ondanks dat, krijg ik het maar niet opgelost.
Concreet is het volgende het geval:
Ik heb 3 tabellen:
- Trip
- TripActiviteit
- Message
Trip bevat ritten, uniek gemaakt door een TripNr.
Tripactiviteit bevat activiteiten die hangen aan Trip
Message bevat status berichten met bijvoorbeeld een starttijd ook daar is het Trip value van toepassing
Wanneer ik los de volgende queries uitvoer, op basis van 1 rit krijg ik een net resultaat:
So far, so good.
Nu wil ik het eea destilleren en verduidelijken, maar daar kom ik niet uit. Doel is dat ik per 'TripActiviteit' uit de tabel 'Message' de value van de kolom 'StartTime' wil hebben.
Dit dacht ik op de volgende manier op te lossen:
Echter, ik krijg nu 4 resultaten terug. 2 x 2 in feite. Ze zijn exact hetzelfde.
Wat ik al gevonden of geprobeerd heb
- Distinct geprobeerd na SELECT - werkt niet
- Group BY geprobeerd. Maar er zitten zoveel kolommen in dat ik tegen "Column name xx is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
- Verschillende joins geprobeerd, in de hoop dat ik een fout maakte.
Ik draai in, waarschijnlijk, een beginnersfout rondje. Maar ik kom er niet uit, wie kan me de goede richting in helpen?
Het is een bekend issue, maar ondanks dat, krijg ik het maar niet opgelost.
Concreet is het volgende het geval:
Ik heb 3 tabellen:
- Trip
- TripActiviteit
- Message
Trip bevat ritten, uniek gemaakt door een TripNr.
Tripactiviteit bevat activiteiten die hangen aan Trip
Message bevat status berichten met bijvoorbeeld een starttijd ook daar is het Trip value van toepassing
Wanneer ik los de volgende queries uitvoer, op basis van 1 rit krijg ik een net resultaat:
SQL:
1
2
3
| SELECT * FROM Trip WHERE TripID = 12345 SELECT * FROM TripActiviteit WHERE Trip = 12345 SELECT * FROM Message WHERE Trip = 12345 |
So far, so good.
Nu wil ik het eea destilleren en verduidelijken, maar daar kom ik niet uit. Doel is dat ik per 'TripActiviteit' uit de tabel 'Message' de value van de kolom 'StartTime' wil hebben.
Dit dacht ik op de volgende manier op te lossen:
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT Tr.TripNr, msg.Starttime FROM Trip tr LEFT JOIN TripActiviteit as act ON tr.Tripnr = act.Trip LEFT JOIN Message as msg ON act.Trip = msg.trip WHERE tr.TripNr = 12345 |
Echter, ik krijg nu 4 resultaten terug. 2 x 2 in feite. Ze zijn exact hetzelfde.
Wat ik al gevonden of geprobeerd heb
- Distinct geprobeerd na SELECT - werkt niet
- Group BY geprobeerd. Maar er zitten zoveel kolommen in dat ik tegen "Column name xx is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
- Verschillende joins geprobeerd, in de hoop dat ik een fout maakte.
Ik draai in, waarschijnlijk, een beginnersfout rondje. Maar ik kom er niet uit, wie kan me de goede richting in helpen?