"In de buurt" is nogal vaag.
Om lid te worden van table2 waar timee ligt binnen 10 seconden van dateee in de toekomst:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
De
LEFT JOINhoudt rijen uittable1in het resultaat, zelfs zonder overeenkomst intable2. -
Er kunnen meerdere overeenkomsten zijn, zodat elke rij uit de basistabellen meerdere keren in verschillende combinaties kan worden geretourneerd.
Alternatief
Om elke rij in table1 samen te voegen naar de rij met met de eerstvolgende hogere tijdstempel. Precies één rij in het resultaat per rij op table1 :
SELECT *
FROM table1 t1
LEFT JOIN LATERAL (
SELECT *
FROM table2 t2
WHERE t2.timee >= t1.dateee
ORDER BY t2.timee
LIMIT 1
) ON TRUE;
Een index op (timee) is essentieel voor prestaties.