2011-04-03 82 views
1

我有以下行:从两个PDO合并结果的查询

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

我有另一个表,piP3Components,我想在其上运行相同的查询,并已添加到$产品变量的结果。结果是一个PDOStatement对象,我不能简单地array_push。

我该怎么做呢?或者,我对于使用JOIN查询相当陌生,有没有一种方法可以在SQL中完成此操作,而不需要在另一列中输入piP3Components.typeID结果?

谢谢。

回答

6

您有两种选择。

首先,如果你从每个桌上拿起列具有相同的列类型,你可以use a 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); 
+0

UNION是我一直在寻找的,谢谢! – 2011-04-03 15:02:09