Необходимо настроить массивы

Владимир17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
12.03.2009

Есть перечень всех заданий, который отражен в таблице tasks, а перечень выполненных заданий отражен в таблице bonus.

Первоначально участнику выводится весь список заданий по id, а когда он выполнил какое-либо задание (при выполнении запись производится в таблицу bonus, где tid=id), оно не должно больше выводится.

Первоначально без условий все задания получаю так:

$tasks = mysql_query("select * FROM tasks");

while ($rown = mysql_fetch_array($tasks)) {

$task[] = array(

"id" => $rown['id'],

"text" => $rown['text'],

"url" => $rown['url'],

"bonus" => $rown['bonus']);

}

А вывожу так:

foreach($task as $item => $n){

echo "Задание #$n[id]
$n[text]
Выполнить задание | Получить бонус $n[bonus] WMR

";

}

Вот хотел доработать скрипт, чтобы перед выводом заданий из таблицы tasks производилась проверка выполненных заданий из таблицы bonus. Проверка осуществляет по параметру id из таблицы tasks и tid из таблицы бонус. Необходимо выводить только те задания, когда их id не равен tid.

Пробовал сделать так через двойной массив:

$bons = mysql_query("select * FROM bonus WHERE login='$l'");

while ($rowb = mysql_fetch_array($bons)) {

$bon[] = array(

"tid" => $rowb['tid']);

$tasks = mysql_query("select * FROM tasks WHERE id!='$rowb[tid]'");

while ($rown = mysql_fetch_array($tasks)) {

$task[] = array(

"id" => $rown['id'],

"text" => $rown['text'],

"url" => $rown['url'],

"bonus" => $rown['bonus']);

}

}

Вывожу так:

foreach($task as $item => $n){

echo "Задание #$n[id]
$n[text]
Выполнить задание | Получить бонус $n[bonus] WMR

";

}

Но в этом случае выводит дважды задания, при чем в первом выводе убирает одного из совпадений id=tid, а во втором выводе убирает второе совпадение. В данном примере 11 заданий и 2 уже выполнены.

Как сделать так, чтобы сразу убрать два задания из общего списка выводимых? Может как-то через join?

Готов немного заплатить на WM.