我有以下一行:
$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结果放在不同的列中?
感谢。
答案 0 :(得分:7)
您有两种选择。
首先,如果您从每个表格中挑选的列具有相同的列类型,则可以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);