簡體   English   中英

當其中一個聯接表中缺少所有記錄時,如何返回所有記錄的結果?

[英]How do I return results for all records in a joined table query when they are missing from one of the joined tables?

我有以下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_discount沒有條目的產品的結果。 我怎樣才能適應它呢?

我認為實際發生的情況是vw_discounts中沒有條目的記錄將被忽略。您也應該使用左聯接來與折扣視圖聯接

我認為您必須將vw_discounts上的內部聯接更改為左聯接

以下聯接:

LEFT JOIN tbl_discount

包括左表中的所有記錄,即使右表中沒有相應的記錄也是如此。

因此,問題似乎不在tbl_discount連接中,而在vw_discounts連接中。 嘗試將其更改為

LEFT JOIN vw_discounts

您需要將以下聯接更改為外部聯接

左聯接tbl_brand上tbl_brand.brand_id = tbl_product.brand_id左聯接tbl_discount上Pd_ProdId = tbl_product.Prod_id內聯接vw_discounts上Pd_ProdId = vw_discounts.prod_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM