Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL,条件WHERE子句_Mysql - Fatal编程技术网

MySQL,条件WHERE子句

MySQL,条件WHERE子句,mysql,Mysql,以下是我的声明: SELECT a.size AS 'size_id', b.size, a.stock, a.id AS 'stock_id', IFNULL(c.quantity,0) as 'cart_qty' FROM stock a JOIN sizes b ON a.size = b.id LEFT JOIN cart_items c ON a.id = c.stock_id WHERE a.product_i

以下是我的声明:

SELECT
    a.size AS 'size_id',
    b.size,
    a.stock,
    a.id AS 'stock_id',
    IFNULL(c.quantity,0) as 'cart_qty'
FROM
    stock a
JOIN 
    sizes b ON a.size = b.id
LEFT JOIN
    cart_items c ON a.id = c.stock_id
WHERE
    a.product_id = '{$product['id']}'
AND
    c.cart_id = '$cart_id'
AND
    a.stock > 0
ORDER BY
    b.display_order

在上面的示例中,$cart\u id可能为空,或者在“cart\u items”表中可能没有匹配项。如何重新表述上述内容,以便在购物车项目中没有匹配项的情况下,我仍然可以从与产品id匹配的库存中获得结果?但是如果购物车项目中有匹配项,那么我会得到附加列(购物车数量)

我不确定您是否可以同时做到这两个。但如果您添加的
$cart\u Id为空,则第一个为空

AND ($cart_Id is null or c.cart_id = '$cart_id')

我不确定你是否两者都能做到。但如果您添加的
$cart\u Id为空,则第一个为空

AND ($cart_Id is null or c.cart_id = '$cart_id')

将谓词移动到
子句上的

LEFT JOIN
    cart_items c ON a.id = c.stock_id AND c.cart_id = '$cart_id'

这样,如果
cart\u items
中没有匹配项,您仍然可以从
stock
中获得匹配
product\u id
的结果。否则,如果
购物车项目中存在匹配项,则正确填写附加列
购物车数量。

将谓词移至
ON
子句:

LEFT JOIN
    cart_items c ON a.id = c.stock_id AND c.cart_id = '$cart_id'

这样,如果
cart\u items
中没有匹配项,您仍然可以从
stock
中获得匹配
product\u id
的结果。否则,如果
cart\u项目中存在匹配项
,则会正确填写附加列
cart\u数量

如果要获取购物车中的任何产品信息,为什么要按购物车id限制结果?只需删除
和c.cart\u id=$cart\u id
@Keiran-Tai即可在加载标准产品页面时运行。因此,如果产品已经在用户的购物车中,我想知道数量。如果您想获取购物车中的任何产品信息,为什么要按购物车id限制结果?只需删除
和c.cart\u id=$cart\u id
@Keiran-Tai即可在加载标准产品页面时运行。因此,如果产品已经在用户的购物车中,我想知道数量。