[英]Two SQL queries in one sql
我有两个查询,我想将它们组合在一起,以便将来自两个不同表的信息合并到一个数组中。
$stmt = $pdo->query("SELECT * FROM Product WHERE id=". $productid);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemData = array(
'id' => $row['id'],
'name' => $row['name'],
'unitprice' => $row['unitprice'],
'quantity' => 1
);
我想将此添加到同一stmt
SELECT size FROM ProductDetails where id=".$productid);
然后具有$ itemData数组,如下所示:
$itemData = array(
'id' => $row['id'],
'name' => $row['name'],
'size' => $row['size'],
'unitprice' => $row['unitprice'],
'quantity' => 1
);
有没有办法做到这一点? 谢谢。
您想在这里使用左联接
MySQL LEFT JOIN子句允许您从两个或多个数据库表中查询数据。 LEFT JOIN子句是SELECT语句的可选部分,出现在FROM子句之后。
因此,在您的示例中:
SELECT * FROM Product
LEFT JOIN ProductDetails ON ProductDetails.product_id = Product.product_id
WHERE id=". $productid
尝试使用联接:
SELECT p.*, pd.size
FROM Product p
INNER JOIN ProductDetails pd
ON p.id = pd.productid;
在SQL查询中使用联接,然后仅选择所需的字段。
$stmt = $pdo->query("SELECT p.id, p.name, pd.size, p.unitprice FROM Product as p INNER JOIN ProductDetails as pd ON p.id = pd.productid WHERE p.id=". $productid);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemData = array(
'id' => $row['id'],
'name' => $row['name'],
'size' => $row['size'],
'unitprice' => $row['unitprice'],
'quantity' => 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.