我想将两个查询组合在一起,以便将两个不同表中的信息合并到一个数组中。
$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
);
有可能这样做吗? 谢谢。
答案 0 :(得分:1)
您想在此处使用左连接
MySQL LEFT JOIN子句允许您查询两个或更多数据 数据库表。 LEFT JOIN子句是可选的部分 SELECT语句,出现在FROM子句之后。
所以在你的例子中:
SELECT * FROM Product
LEFT JOIN ProductDetails ON ProductDetails.product_id = Product.product_id
WHERE id=". $productid
答案 1 :(得分:0)
尝试使用联接:
SELECT p.*, pd.size
FROM Product p
INNER JOIN ProductDetails pd
ON p.id = pd.productid;
答案 2 :(得分:0)
在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);