isames
asked on
SQL Query No Results
ALL,
The query below returns all rspf.rspf_prod_n(product numbers) with barcodes (RSBB.RSBB_POS_N) only.
Select Distinct
CASE
WHEN CHARINDEX('-',RSPF.RSPF_PR OD_N) = 0 THEN LTRIM(RTRIM(RSPF.RSPF_PROD _N))
ELSE CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN SUBSTRING(LTRIM(RTRIM(RSPF .RSPF_PROD _N)), 1, CHARINDEX('-',LTRIM(RTRIM( RSPF.RSPF_ PROD_N)))- 1)
ELSE LTRIM(RTRIM(RSPF.RSPF_PROD _N))
END
END AS PRODUCT_NUM,
Ltrim(Rtrim(RSBB_POS_N)) AS BarCode,
RSPF.RSPF_R_OR_S AS RENTAL_OR_SALE,
RSPF.RSPF_DESC AS ITEM_DESC,
LTRIM(RTRIM(RSPF.RSPF_CLAS S)) AS CLASSNUM,
RSPC.RSPC_DESC AS CLASS_DESC,
LTRIM(RTRIM(RSPF.RSPF_GROU P_N)) AS GROUPNUM,
RSGF.RSGF_DESC AS GROUP_DESC,
RSPF.RSPF_VENDOR_N AS VENDOR_NUM,
RSPF.RSPF_VENDOR_PROD_N AS Vendor_Prod_Num,
(SELECT APVF.APVF_NAME FROM APVF WHERE APVF_VENDOR_N = RSPF.RSPF_VENDOR_N) AS VENDOR_NAME,
CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN ''
ELSE CONVERT(VARCHAR, RSPF.RSPF_CREATED_DATE, 111)
END AS CREATE_DATE,
(SELECT RSPFC.RSPFC_CODE FROM RSPFC WHERE RSPFC.RSPFC_PROD_N = RSPF.RSPF_PROD_N) AS ORDER_CODE,
RSPF.RSPF_COST AS COST,
CAST(CAST(RSPF.RSPF_REPLAC EMENT as numeric(7,2)) as varchar(8)) AS REPLACEMENT_COST,
RSPF.RSPF_REORDER_PRICE AS NEXT_BUY_COST,
RSPF.RSPF_LIST AS LIST_PRICE,
RSPF.RSPF_INV_Y_N
FROM RSPF, RSPC, RSGF, RSBB
WHERE RSPC.RSPC_CLASS=RSPF.RSPF_ CLASS
AND RSGF.RSGF_GROUP_N = RSPF.RSPF_GROUP_N
AND RSPF.RSPF_R_OR_S = 'S'
AND RSPF.RSPF_PROD_N = RSBB.RSBB_PROD_N
GO
I need to show all product numbers even if they don't have a barcode, so I tried to do a left join on RSPF. The query just runs without ever returning anything. See below:
SELECT DISTINCT
CASE
WHEN CHARINDEX('-',RSPF.RSPF_PR OD_N) = 0 THEN LTRIM(RTRIM(RSPF.RSPF_PROD _N))
ELSE CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN SUBSTRING(LTRIM(RTRIM(RSPF .RSPF_PROD _N)), 1, CHARINDEX('-',LTRIM(RTRIM( RSPF.RSPF_ PROD_N)))- 1)
ELSE LTRIM(RTRIM(RSPF.RSPF_PROD _N))
END
END AS PRODUCT_NUM,
Ltrim(Rtrim(RSBB_POS_N)) AS BarCode,
RSPF.RSPF_R_OR_S AS RENTAL_OR_SALE,
RSPF.RSPF_DESC AS ITEM_DESC,
LTRIM(RTRIM(RSPF.RSPF_CLAS S)) AS CLASSNUM,
RSPC.RSPC_DESC AS CLASS_DESC,
LTRIM(RTRIM(RSPF.RSPF_GROU P_N)) AS GROUPNUM,
RSGF.RSGF_DESC AS GROUP_DESC,
RSPF.RSPF_VENDOR_N AS VENDOR_NUM,
RSPF.RSPF_VENDOR_PROD_N AS Vendor_Prod_Num,
(SELECT APVF.APVF_NAME FROM APVF WHERE APVF_VENDOR_N = RSPF.RSPF_VENDOR_N) AS VENDOR_NAME,
CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN ''
ELSE CONVERT(VARCHAR, RSPF.RSPF_CREATED_DATE, 111)
END AS CREATE_DATE,
(SELECT RSPFC.RSPFC_CODE FROM RSPFC WHERE RSPFC.RSPFC_PROD_N = RSPF.RSPF_PROD_N) AS ORDER_CODE,
RSPF.RSPF_COST AS COST,
CAST(CAST(RSPF.RSPF_REPLAC EMENT as numeric(7,2)) as varchar(8)) AS REPLACEMENT_COST,
RSPF.RSPF_REORDER_PRICE AS NEXT_BUY_COST,
RSPF.RSPF_LIST AS LIST_PRICE,
RSPF.RSPF_INV_Y_N
FROM RSPF, RSPC, RSGF, RSBB
Left Join RSPF A
on A.RSPF_PROD_N = RSBB.RSBB_PROD_N
WHERE RSPC.RSPC_CLASS=RSPF.RSPF_ CLASS
AND RSGF.RSGF_GROUP_N = RSPF.RSPF_GROUP_N
AND RSPF.RSPF_R_OR_S = 'S'
GO
Please advise.
The query below returns all rspf.rspf_prod_n(product numbers) with barcodes (RSBB.RSBB_POS_N) only.
Select Distinct
CASE
WHEN CHARINDEX('-',RSPF.RSPF_PR
ELSE CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN SUBSTRING(LTRIM(RTRIM(RSPF
ELSE LTRIM(RTRIM(RSPF.RSPF_PROD
END
END AS PRODUCT_NUM,
Ltrim(Rtrim(RSBB_POS_N)) AS BarCode,
RSPF.RSPF_R_OR_S AS RENTAL_OR_SALE,
RSPF.RSPF_DESC AS ITEM_DESC,
LTRIM(RTRIM(RSPF.RSPF_CLAS
RSPC.RSPC_DESC AS CLASS_DESC,
LTRIM(RTRIM(RSPF.RSPF_GROU
RSGF.RSGF_DESC AS GROUP_DESC,
RSPF.RSPF_VENDOR_N AS VENDOR_NUM,
RSPF.RSPF_VENDOR_PROD_N AS Vendor_Prod_Num,
(SELECT APVF.APVF_NAME FROM APVF WHERE APVF_VENDOR_N = RSPF.RSPF_VENDOR_N) AS VENDOR_NAME,
CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN ''
ELSE CONVERT(VARCHAR, RSPF.RSPF_CREATED_DATE, 111)
END AS CREATE_DATE,
(SELECT RSPFC.RSPFC_CODE FROM RSPFC WHERE RSPFC.RSPFC_PROD_N = RSPF.RSPF_PROD_N) AS ORDER_CODE,
RSPF.RSPF_COST AS COST,
CAST(CAST(RSPF.RSPF_REPLAC
RSPF.RSPF_REORDER_PRICE AS NEXT_BUY_COST,
RSPF.RSPF_LIST AS LIST_PRICE,
RSPF.RSPF_INV_Y_N
FROM RSPF, RSPC, RSGF, RSBB
WHERE RSPC.RSPC_CLASS=RSPF.RSPF_
AND RSGF.RSGF_GROUP_N = RSPF.RSPF_GROUP_N
AND RSPF.RSPF_R_OR_S = 'S'
AND RSPF.RSPF_PROD_N = RSBB.RSBB_PROD_N
GO
I need to show all product numbers even if they don't have a barcode, so I tried to do a left join on RSPF. The query just runs without ever returning anything. See below:
SELECT DISTINCT
CASE
WHEN CHARINDEX('-',RSPF.RSPF_PR
ELSE CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN SUBSTRING(LTRIM(RTRIM(RSPF
ELSE LTRIM(RTRIM(RSPF.RSPF_PROD
END
END AS PRODUCT_NUM,
Ltrim(Rtrim(RSBB_POS_N)) AS BarCode,
RSPF.RSPF_R_OR_S AS RENTAL_OR_SALE,
RSPF.RSPF_DESC AS ITEM_DESC,
LTRIM(RTRIM(RSPF.RSPF_CLAS
RSPC.RSPC_DESC AS CLASS_DESC,
LTRIM(RTRIM(RSPF.RSPF_GROU
RSGF.RSGF_DESC AS GROUP_DESC,
RSPF.RSPF_VENDOR_N AS VENDOR_NUM,
RSPF.RSPF_VENDOR_PROD_N AS Vendor_Prod_Num,
(SELECT APVF.APVF_NAME FROM APVF WHERE APVF_VENDOR_N = RSPF.RSPF_VENDOR_N) AS VENDOR_NAME,
CASE
WHEN RSPF.RSPF_R_OR_S = 'R' THEN ''
ELSE CONVERT(VARCHAR, RSPF.RSPF_CREATED_DATE, 111)
END AS CREATE_DATE,
(SELECT RSPFC.RSPFC_CODE FROM RSPFC WHERE RSPFC.RSPFC_PROD_N = RSPF.RSPF_PROD_N) AS ORDER_CODE,
RSPF.RSPF_COST AS COST,
CAST(CAST(RSPF.RSPF_REPLAC
RSPF.RSPF_REORDER_PRICE AS NEXT_BUY_COST,
RSPF.RSPF_LIST AS LIST_PRICE,
RSPF.RSPF_INV_Y_N
FROM RSPF, RSPC, RSGF, RSBB
Left Join RSPF A
on A.RSPF_PROD_N = RSBB.RSBB_PROD_N
WHERE RSPC.RSPC_CLASS=RSPF.RSPF_
AND RSGF.RSGF_GROUP_N = RSPF.RSPF_GROUP_N
AND RSPF.RSPF_R_OR_S = 'S'
GO
Please advise.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
RSPF is the table containing all of your products. RSBB is the table containing barcodes for products. To show all records from RSPF and only records from RSBB that match, you need to make the left join between your main table (RSPF) to your secondary table (RSBB).
ASKER