This seems a reasonable way to do it.
$res = mysql_query('SELECT products_id FROM specials');
while($row = mysql_fetch_row($res)){
$special_ids[] = $row[0];
}
$res = mysql_query('SELECT products_id FROM products WHERE products_id NOT IN ('.join(',', $special_ids).')');
But, this will get a bit unwieldy if there are going to be lots of 'specials'.
You could do something like ..
$res = mysql_query('SELECT products_id FROM products');
while($row = mysql_fetch_row($res)){
$product_ids[] = $row[0];
}
$res = mysql_query('SELECT products_id FROM specials');
while($row = mysql_fetch_row($res)){
$special_ids[] = $row[0];
}
$not_specials = array_diff($product_ids, $special_ids);
(All products that are not specials)
Someone else might have a quicker way, but I don't see how you'd be able to do it in one call to mysql (have to wait for version 5).