繁体   English   中英

一个SQL中有两个SQL查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM