Twoje wewnętrzne zapytanie jest skorelowanym podzapytaniem, ale w ogóle nie widzi tabeli 1. Jest to ograniczenie MySQL — zobacz Podręcznik MySQL — D. 3. Ograniczenia dotyczące podzapytań . Mniej więcej w połowie jest napisane:
Chociaż podzapytanie jest częścią wyrażenia LEFT JOIN, jest ono częścią klauzuli FROM.
To przeformułowanie może zadziałać za Ciebie:
SELECT table1.id,
(SELECT COUNT(*)
FROM table2
WHERE table2.lt > table1.lt
AND table2.rt < table1.rt) AS cnt
FROM table1;