[MSSQL] Limiet stellen aan LEFT OUTER JOIN matches

Pagina: 1
Acties:

  • JasperE
  • Registratie: December 2003
  • Laatst online: 27-01 23:07
Een limiet stellen aan het aantal LEFT OUTER JOIN matches, is dat mogelijk? Ik heb de documentatie erop nagelopen maar heb niets gevonden.

Zeg maar iets in deze trant:
Stel je hebt een tabel met daarin je werknemers, daanraast een tabel met klanten. Iedere klant heeft een eigen werknemer toegewezen als contact persoon. Je wil nu in 1 query de klant met de hoogste id bij je werknemer selecteren

code:
1
2
3
4
SELECT DISTINCT werknemers.naam, 
                klanten.naam
FROM werknemers
LEFT OUTER JOIN klanten ON (klanten.repid = werknemers.id)


De bovenstaande query zou per werknemer meerdere rijen returnen als er meerdere klanten bij gevonden worden. Eigenlijk zou ik dus zoiets willen als

code:
1
2
3
4
SELECT DISTINCT werknemers.naam, 
                klanten.naam
FROM werknemers
LEFT OUTER JOIN klanten ON (klanten.repid = werknemers.id LIMIT 1)


of

code:
1
2
3
4
SELECT DISTINCT werknemers.naam, 
                klanten.naam
FROM werknemers
LEFT OUTER JOIN klanten ON ((klanten.repid = werknemers.id) AND (klanten.repid = max(klanten.repid)))


Natuurlijk zijn de bovenstaande methodes niet mogelijk, maar is er een soort van workaround om dit wel te kunnen bereiken?

Verwijderd

SQL:
1
2
3
4
5
6
SELECT DISTINCT werknemers.naam, 
                klanten.naam, MAX(werknemers.id)

FROM werknemers
LEFT OUTER JOIN klanten ON (klanten.repid = werknemers.id)
GROUP BY werknemers.naam, klanten.naam 

Zoiets??

  • JasperE
  • Registratie: December 2003
  • Laatst online: 27-01 23:07
Dat zou in het algemeen de hoogste waarde van klanten.id selecteren, in plaats van de hoogste klanten.id te joinen aan iedere rij uit werknemers

[ Voor 15% gewijzigd door JasperE op 20-04-2006 10:04 ]