Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Sql 当一个联接表中的记录丢失时,如何返回联接表查询中所有记录的结果?_Sql - Fatal编程技术网

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

我有以下SQL查询

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

我想你倒数第二句中有一个拼写错误-请你检查一下好吗?我想你倒数第二句中有一个拼写错误-请检查一下好吗?