Объединить результаты двух запросов PDO - PullRequest
1 голос
/ 03 апреля 2011

У меня есть следующая строка:

$products = $dbh->query("SELECT piP2Components.typeID, invTypes.typeName FROM piP2Components INNER JOIN invTypes ON piP2Components.typeID = invTypes.typeID ORDER BY invTypes.typeName ASC;");

У меня есть другая таблица, piP3Components, и я хотел бы выполнить тот же запрос и добавить результаты в переменную $ products.В результате получается объект PDOStatement, я не могу просто array_push.

Как бы я поступил так?В качестве альтернативы, я довольно новичок в использовании запросов JOIN, есть ли способ сделать это в SQL без получения результата piP3Components.typeID в другом столбце?

Спасибо.

1 Ответ

7 голосов
/ 03 апреля 2011

У вас есть два варианта.

Во-первых, если столбцы, которые вы выбираете из каждой таблицы, имеют идентичные типы столбцов, вы можете использовать UNION:

SELECT foo, bar, baz FROM something WHERE ...
UNION ALL
SELECT qux AS foo, meta AS bar, syntactic AS baz FROM elsewhere WHERE ...

Во-вторых, вы можете запустить оба запроса, затем извлечь результаты для каждого и поместить их в один массив, используя этот массив позже вместо дескриптора оператора при обработке результатов:

$results = array();

$sth_a = $pdo->prepare(...);
$sth_a->execute(...);
while($row = $sth_a->fetch(PDO::FETCH_ASSOC))
    $results[] = $row;

$sth_b = $pdo->prepare(...);
$sth_b->execute(...);
while($row = $sth_b->fetch(PDO::FETCH_ASSOC))
    $results[] = $row;

print_r($results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...