Приветствую всех! Есть две таблицы: Код (Text): users: -----+------+------------+ id | name | bday | -----+------+------------+ 1 | alex | 1974-11-04 | 2 | john | 1977-11-22 | 3 | mark | 1984-05-14 | -----+------+------------+ users_meta: -----+---------+----------+---------------+ id | status | reason | del_date | -----+---------+----------+---------------+ 1 | active | NULL | NULL | 2 | deleted | спаммер | 2010-12-22 | 3 | active | NULL | NULL | -----+---------+----------+---------------+ И есть PHP-функция, которая получает на входе ID пользователя и определяет, активен ли его профиль или он уже удалён. Функция проверяет по второй таблице статус (по ID) и действует по логике: Если профиль удалён - функция должна сделать выборку из двух таблиц: из первой выбрать имя (по ID), а из второй - дату и причину удаления. Если профиль активен (статус active) - функция должна вернуть FALSE: PHP: <?php function isProfileDeleted($userID) { global $lnk; $query = " SELECT `users`.`name`,`users_meta`.`status`, `users_meta`.`reason`, `users_meta`.`del_date` FROM `users`,`users_meta` WHERE `users`.`id` = ".$userID." AND `users`.`id` = `users_meta`.`id`"; $result = mysql_query($query, $lnk) or die(mysql_error()); if ($result && mysql_num_rows($result) > 0) { $row = mysql_fetch_array($result, MYSQL_ASSOC); // Если профиль удалён - получаем дату и причину удаления if ( $row['status'] == "deleted" ) { $profileNickName = $row['name']; $profileDeleteReason = $row['reason']; $profileDeleteDate = $row['del_date']; mysql_free_result($result); return(true); } // С профилем всё в порядке, выходим else { mysql_free_result($result); return(false); } } else { return(false); } } ?> В данном примере, при вызове этой функции с ID=2 мы должны получить выборку, состоящую из имени, даты удаления и причины удаления профиля. В остальных случаях - FALSE. В принципе, сейчас всё работает. Но меня беспокоит другое: правильно ли я составил запрос? Может, можно было как-то проще сделать? Функция будет вызываться при каждом просмотре профиля (а профилей на сайте - пара десятков тысяч). Не сильно ли эта функция будет грузить сервак с базой? Заранее благодарю за ответы и конструктивную критику.
Можно переписать при помощи LEFt JOIN, но мне кажется результат будет аналогичным. Если в таблицах есть индексы работать будет быстро.