Sql 当一个联接表中的记录丢失时,如何返回联接表查询中所有记录的结果?
我有以下SQL查询Sql 当一个联接表中的记录丢失时,如何返回联接表查询中所有记录的结果?,sql,Sql,我有以下SQL查询 SELECT tbl_product.prod_id, ISNULL (prod_code, '') AS prod_code, ISNULL (prod_category, '') AS prod_category, ISNULL(prod_title, '') AS prod_title, IS
SELECT tbl_product.prod_id,
ISNULL (prod_code, '') AS prod_code,
ISNULL (prod_category, '') AS prod_category,
ISNULL(prod_title, '') AS prod_title,
ISNULL(prod_price, 0.0) AS prod_price,
ISNULL(tbl_product.prod_sales_price, 0.0) AS prod_sales_price,
ISNULL(prod_desc, '') AS prod_desc,
ISNULL(prod_location, '') AS prod_location,
brand_title,
pd_discount = CASE
WHEN P_Discount > 0 THEN vw_discounts.P_Discount
WHEN B_discount > 0 THEN vw_discounts.B_discount
WHEN D_Discount > 0 THEN vw_discounts.D_Discount
ELSE 0.00
END,
ISNULL((SELECT image_path
FROM tbl_image
WHERE tbl_image.prod_id = tbl_product.prod_id
AND image_primary = 1), '''') AS MainImage,
ISNULL(prod_pick_from_store, 0) AS prod_pick_from_store
FROM tbl_product
LEFT JOIN tbl_brand
ON tbl_brand.brand_id = tbl_product.brand_id
LEFT JOIN tbl_discount
ON Pd_ProdId = tbl_product.Prod_id
INNER JOIN vw_discounts
ON Pd_ProdId = vw_discounts.prod_id
WHERE tbl_product.prod_id > 270
AND tbl_product.prod_id < 290
目前,对于没有tbl_折扣条目的产品,此查询不会返回结果。我如何调整它以使其生效?我认为实际发生的情况是,在大众汽车折扣中没有条目的记录被忽略
您也应该使用左连接来连接折扣视图我认为实际发生的情况是,在vw_折扣中没有条目的记录被忽略
您也应该使用左连接来加入折扣视图我认为您必须将vw\u折扣上的内部连接更改为左连接我认为您必须将vw\u折扣上的内部连接更改为左连接以下连接:
LEFT JOIN tbl_discount
包括左表中的所有记录,即使右表中并没有相应的记录
所以,问题似乎不在于tbl_折扣加盟,而在于大众折扣加盟。试着把它改成
LEFT JOIN vw_discounts
以下加入:
LEFT JOIN tbl_discount
包括左表中的所有记录,即使右表中并没有相应的记录
所以,问题似乎不在于tbl_折扣加盟,而在于大众折扣加盟。试着把它改成
LEFT JOIN vw_discounts
您需要将以下联接更改为外部联接 左加入tbl_品牌 关于tbl_brand.brand_id=tbl_product.brand_id 左加入tbl_折扣 在Pd_ProdId=tbl_product.Prod_id上 内部加入大众汽车折扣
在Pd_ProdId=vw_折扣上。prod_id您需要将以下联接更改为外部联接 左加入tbl_品牌 关于tbl_brand.brand_id=tbl_product.brand_id 左加入tbl_折扣 在Pd_ProdId=tbl_product.Prod_id上 内部加入大众汽车折扣
在Pd_ProdId=vw_折扣。prod_id我想你倒数第二句中有一个拼写错误-请你检查一下好吗?我想你倒数第二句中有一个拼写错误-请检查一下好吗?