Архив рассылки -программирование на PHP

         

Файлы этого выпуска: /step/154/
——

Ох, что-то мне стало скучно писать этот курс. Как-то вяло вы принимаете в нем участие. Проект читают около тысячи человек, а явные ошибки и опечатки замечают единицы. Я даже не исправляю их. Зачем?

У меня сложилось такое впечатление, что 99% читателей курса попросту ждут его завершения, чтобы запользовать готовые стрипты для своих задач. А программирование на PHP их интересует просто по ходу дела.

Это так? Если это так, ответьте. Я буду меньше времени уделять болтовне и буду публиковать больше готовых стриптов с минимумом пояснений. Мне ж не жалко. Наоборот, писать скрипты — это для меня намного проще, чем объяснять, как они работают.

Но мне дороже те, кто пришел ко мне за умением, за соревнованием, за сложностями. Вот для таких работать по-настоящему интересно. Именно они — "умники и умницы".

Погода сегодня какая-то тяжелая, что ли... Перед тем, как вернуться к скриптованию наших баранов, предлагаю задачку для Умников и Умниц по SQL. Ответы, как всегда, жду в форуме (ссылка на форум внизу и вверху страницы).

Итак. Вполне реальная задача.
Есть у меня робот, занимающийся рассылками всякой всячины: http://www.21.ru/post/.



Рассылки проводятся по разным правилам, но с соблюдением одного из них: ни один текст не должен попасть в рассылку дважды.

Для этого ведется специальный лог в SQL-таблице — когда в какую рассылку какой текст был отправлен.

И при поиске следующего текста обязательно учитываются данные из этого лога.

Дальше. У MySQL, в отличие от более продвинутых диалектов SQL, нет такого понятия, как select from table where var in select... То есть, не поддерживаются вложенные запросы.

Жаль. Как бы было удобно, запросить следующий текст для рассылки примерно так:

select [данные текста] from [таблица] where [id текста] not in select [id текста] from [таблица логов]

Но я этого сделать не могу.

Конечно, можно вложенный запрос смоделировать каким-то простым способом.



Содержание раздела