一个sql中有两个SQL查询

时间:2018-02-21 11:14:44

标签: mysql

我想将两个查询组合在一起,以便将两个不同表中的信息合并到一个数组中。

 $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
            );

有可能这样做吗? 谢谢。

3 个答案:

答案 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);