Как выполнить такую задачу

Ysn

Guest
Как выполнить такую задачу

У меня две таблицы. Из одной я беру первого человека (сортирую по дате выбора - т.е., выбираю того, кого дольше всех не выбирал - функцией NOW() ), и должен разослать все строки из его текстового файла (одна строка = одно сообщение) разным людям из второй таблицы. "Разослать" - это значит, записать строку в файл с именем пользователя из второй таблицы. Как это сделать? Т.е., выглядит это так?

Tabl 1
login | lastmsg
aaa | 2004-12-26 10:10:10
bbb| 2004-12-25 10:10:10

Tabl 2
login | lastmsg
xxx | 2004-12-26 10:10:10
zzz| 2004-12-25 10:10:10
vvv| 2004-12-22 10:10:10
bbb| 2004-12-23 10:10:10


Берем из Tabl1 того, от кого дольше всех не посылали сообщения, считываем все сообщения из его фала (строка=сообщение), посылаем его первое сообщение самому давнонеполучавшему из tabl 2, потом берем второе сообщение, посылаем его следующему давнонеполучавшему из tabl 2, и так далее... когда пошлются все сообщения этого человека из tabl 1 - переходим ко второму самому давнонепосылавшему сообщения.

Все сообщения людей TABL 1 хранятся в их текстовых файлах. Все получено-непрочитанные сообщения людей из tabl 2 - хранятся в ИХ текстовых файлах...

Я немного запутался с этой конструкцией... как это можно сделать?
 

Кром

Новичок
>Я немного запутался с этой конструкцией... как это можно сделать?

Начнем с того, что если есть база, то от файлов мы можем смело отказаться.
Для начала продумай схему с этим новым условием.
 

Ysn

Guest
Наверное, не получится. Дело в том, что каждому человеку из таблицы 2 записываются три разных типа информации, причем количество информации каждого типа у каждого человека - абсолютно разное... плюс народу много.

А с людьми из первой таблицы - вообще беда... шесть типов информации. И тоже разное количество.
 

Кром

Новичок
Ysn
Получится, и еще как. Не надо только в панику впадать. Для данной ситуации база данных подходит как нельзя лучше. Поэтому начинай переделывать схему.
 

Ysn

Guest
Хммм.... Разве что, завести отдельную таблицу на все сообщения, а в соседних столбцах приписывать людей из таблицы 1, кому конкретно это сообщение предозначается? Но тогда появляется проблема записи нескольких пользователей в один столбец на одной и той же строке... или при помощи alter table добавлять столбец на каждого пользователя?

-~{}~ 27.12.04 02:18:

Или же лучше постоянно добавлять строки? И черт с ним, что одно и то же сообщение будет повторятся - зато другой (второй столбец) будет содержать просто одного пользователя... и у меня получится так:

Table 3

msg | poluchatel
privet| aaa
privet| bbb
privet| eee
privet| fffff
poka | bbb
hello | aaa

Может, так эффективнее (я про скорость)?
 

Кром

Новичок
Итак мы полностью перешли на базу. Теперь попробуем оптимизнуть.
По идее здесь нужна одна таблица для пользователей и одна для сообщений.
По поводу третьей таблицы. В принципе, можно обойтись и без нее. То есть делать выборку из первых таблиц и сразу же осуществлять какое либо действие. Если же с третьей таблицей получается оптимальнее, то в нее в любом случае имеет смысл вносить только id. Т.е. id сообщение и id получателя.
 
Сверху