【发布时间】:2022-01-18 10:20:19
【问题描述】:
SQL 查询:
SELECT
c.id AS c_id,c.image AS category_image,b.id AS p_id,b.image AS product_image,
a.id as product_id,0 AS sc_id,0 AS sub_category,0 AS is_active2, a.*,b.*,c.*
FROM stock_50644 a
JOIN product b ON a.product_id = b.id
JOIN category c ON b.category = c.id
WHERE b.category=1 ORDER BY p_id ASC
如果stock_50644 没有product 条目,那么我得到的结果为空。如果库存为空,我如何让它返回所有库存值为空的产品
编辑:
PRODUCT ; STOCK_50644
id product_name category_id ; id product_id price
---- -------- ---------- --------------- ; ---- --------- ----- --------------
1 name1 1 ; 1 2 15
2 name2 2 ;
如果我在下面的查询中输入WHERE b.id=1,我会得到正确的预期输出。
但是一旦我用ORDER BY b.id ASC LIMIT 1; 替换它,它就需要很长时间,然后#2013 - Lost connection to MySQL server during query
SELECT
c.id AS c_id, c.image AS category_image, b.id AS p_id, b.image AS product_image,
a.id AS product_id, 0 AS sc_id, 0 AS sub_category, 0 AS is_active2, a.*,b.*,c.*
FROM stock_50644 a
RIGHT JOIN product b ON a.product_id = b.id AND b.category = 1
LEFT JOIN category c ON b.category = c.id
WHERE b.id=1
ORDER BY b.id ASC LIMIT 1;
【问题讨论】:
-
尽量提供你想要的查询表和结果表的小表。这可能有助于我更好地了解你。我认为您需要右加入产品并左加入类别,但需要一个示例表来检查这一点。
-
@TOlaleye 完成。我已经编辑了我的问题,请看一下