Рабочие сложности



Была задача лаконично реализовывать выборку данных по определенным правилам. Сидел, ломал голову над SQL и GROUP BY (плюс DISTINCT). А ответ оказался совсем рядом, в так называемом перемножении таблиц.

Итого, вместо неработающего, но показывающего требуемую логику, кода:
SELECT broadcast.id FROM broadcast, programme WHERE programme.recommend=1 AND broadcast.programme=programme.id AND broadcast.begintime>=NOW() — INTERVAL ’30 minutes’ GROUP BY broadcast.programme;

Достаточно было написать вот такое простое и маленькое решение:
select b1.id from broadcast as b1, programme as p, (select programme, min(begintime) as begintime from broadcast where begintime>=now() — INTERVAL ’30 minutes’ group by programme) as b2 where b1.programme=b2.programme and b1.begintime=b2.begintime and p.id=b1.programme and p.recommend=1;