Да PDO
може да извлече два (или повече) набора от редове, стига базата данни, която използвате, да го поддържа. Мисля, че MS SQL Server и MySQL и двете поддържат тази функционалност, но към момента на писане на SQLite не.
Функцията, която искате, е PDOStatement::nextRowset
Така че във вашия пример по-горе може да направите нещо като;
$sth = $dbh->prepare("SELECT * FROM tb1 WHERE cond1;
SELECT * FROM tb2 WHERE cond2");
$sth->execute();
$rowset1 = $sth->fetchAll();
$sth->nextRowset();
$rowset2 = $sth->fetchAll();
print_r($rowset1);
print_r($rowset2);
Напълно разумно е една съхранена процедура да върне повече от един набор от редове.