Se provi a fare così:
$result = $DB->Query ("SELECT id, name, description, filename, impressions_pack, impressions,
clicks
FROM banners
WHERE (((campaign='$b_campaign_impression') AND
((impressions_pack - impressions) > 0)) OR
campaign='$b_campaign_click' OR
campaign='$b_campaign_flat')
ORDER BY RAND()
LIMIT 1");
cosa succede?