我有两张桌子,如下: 表“a”包含:
id|name
stock1|fullname
stock2|fullname2
stock3|fullname3
表“b”包含给定库存的产品数量。
id|stock_id|quantity|product_id|
1|stock1|3|13
2|stock3|4|13
3|stock1|1|5
4|stock2|2|2
现在我需要将这两个表组合在一起,以便每个产品从表“a”中获取其库存全名,如果没有给出库存的数量,它仍然会显示quanitity为0的行。
因此,从我的示例中,product_id 13将显示为:
stock|quanitity|product_id|stock_fullname
stock1|3|13|fullname1
stock2|0|13|fullname2
stock3|4|13|fullname3
答案 0 :(得分:4)
您应该可以使用LEFT JOIN来实现此目的。
SELECT a.id AS stock, COALESCE(b.quanitity,0), b.product_id, a.name AS stock_fullname
FROM a
LEFT JOIN b
ON a.id = b.stock_id
AND b.product_id = 13
答案 1 :(得分:0)
试试这个:
SELECT stock,COALESCE(quanitity,0),product_id,stock_fullname FROM stock JOIN product
答案 2 :(得分:0)
听起来你需要使用LEFT JOIN,尽管没有数量的记录可能显示为NULL而不是零。类似的东西:
SELECT a.*, b.*
FROM table_a a
LEFT JOIN table_b b ON a.stock_id = b.stock_id
答案 3 :(得分:0)
我认为此查询适用于您的示例:
SELECT a.id stock if(b.quantity IS NULL, 0, b.quantity),
b.product_id, a.name stock_fullname
FROM b
LEFT JOIN a b.stock = a.id
WHERE b.product_id = 13;
答案 4 :(得分:0)
您需要一个外部联接,以便仍然考虑来自一个表中没有相应行的行。相反,内连接坚持你有一个匹配的行。如果要从没有行的表中提取值,则会得到NULL。语法在不同的数据库之间有所不同,并且根据左侧或右侧的表是否得到假行进行区分。
请参阅语法的其他答案。
答案 5 :(得分:0)
您应该可以使用LEFT JOIN
来实现此目标。
SELECT a.id AS stock, COALESCE(b.quanitity,0), b.product_id, a.name AS stock_fullname
FROM a
LEFT JOIN b
ON a.id = b.stock_id
AND b.product_id = 13