請教各位以下SQL語法INNER JOIN SQL 三個資料表語法有錯嗎為何會撈無資料
/*零件零售-0708*/
SELECT PARTSRETAIL.REGISTERUNIT_NAME 登記單位, PARTSRETAIL.PARTSRETAIL_NO 整理單號, ASSET.BUYERS 購買者,
PARTSRETAIL.BRAND_NAME 產品品牌, PARTSRETAIL.MODEL_NAME 產品機型, WO.MECHANIC_NAME 維修技師,
CONVERT(varchar, PARTSRETAIL.FIXEDDATE, 111) 技師結單時間, PARTSRETAIL.STATE_NAME 維修狀態,
WO.MAINTAINEXPENSEAFTERDIS 折扣後維修工資, PARTSRETAIL.PARTSTOTALAFTERDIS 折扣後零件費用,
PARTSRETAIL.INTPARTSDISCOUNT 零件折扣, PARTSRETAIL.PARTSTOTALAFTERDIS 整筆零件折扣後金額,
PARTSRETAIL.TOTALAMOUNT 總計費用含稅, PARTSRETAIL.PAYTYPE_NAME 收款類別
FROM (PARTSRETAIL INNER JOIN ASSET ON PARTSRETAIL.PARTSRETAIL_NO = ASSET.ASSET_ID)
INNER JOIN WO ON PARTSRETAIL.PARTSRETAIL_NO = WO.ASSET_ID
WHERE (PARTSRETAIL.PARTSRETAIL_NO >= '2022%') AND (PARTSRETAIL.PARTSRETAIL_NO <= '2022%')
ORDER BY 登記單位
/*零件零售-0708*/
SELECT
PARTSRETAIL.REGISTERUNIT_NAME 登記單位
, PARTSRETAIL.PARTSRETAIL_NO 整理單號
, ASSET.BUYERS 購買者
, PARTSRETAIL.BRAND_NAME 產品品牌
, PARTSRETAIL.MODEL_NAME 產品機型
, WO.MECHANIC_NAME 維修技師
, CONVERT(varchar, PARTSRETAIL.FIXEDDATE, 111) 技師結單時間
, PARTSRETAIL.STATE_NAME 維修狀態
, WO.MAINTAINEXPENSEAFTERDIS 折扣後維修工資
, PARTSRETAIL.PARTSTOTALAFTERDIS 折扣後零件費用
, PARTSRETAIL.INTPARTSDISCOUNT 零件折扣
, PARTSRETAIL.PARTSTOTALAFTERDIS 整筆零件折扣後金額
, PARTSRETAIL.TOTALAMOUNT 總計費用含稅
, PARTSRETAIL.PAYTYPE_NAME 收款類別
FROM
(
PARTSRETAIL
INNER JOIN ASSET
ON PARTSRETAIL.PARTSRETAIL_NO = ASSET.ASSET_ID
)
INNER JOIN WO
ON PARTSRETAIL.PARTSRETAIL_NO = WO.ASSET_ID
ORDER BY 登記單位
ASSET.ASSET_ID 是 資料型態是 【uniqueidentifier】
PARTSRETAIL.PARTSRETAIL_NO 是 資訊型態 【Ncahr(20)】
你可以先Join資料看看,先確定 "兩個資料表join完有資料後,在join下一個資料表"
不過我猜..是...資料表內的欄位資料不匹配,join錯了。
這圖好亂,
看不懂,
不過這個為什麼有括號
FROM (PARTSRETAIL INNER JOIN ASSET ON PARTSRETAIL.PARTSRETAIL_NO = ASSET.ASSET_ID)
您好感謝回復
總共用到三個資料表分別為PARTSRETAIL(零件零售單),ASSET(產品註冊),WO(維修服務單)
FROM (PARTSRETAILL(零件零售單) INNER JOIN ASSET(產品註冊) ON PARTSRETAIL.PARTSRETAIL_NO (整理單號)= ASSET.ASSET_ID(主索引鍵))
INNER JOIN WO(維修服務單) ON PARTSRETAIL.PARTSRETAIL_NO = WO.ASSET_ID
先把括號拿掉試試看.
您好原文是這樣
/*零件零售-0708*/
SELECT PARTSRETAIL.REGISTERUNIT_NAME 登記單位, PARTSRETAIL.PARTSRETAIL_NO 整理單號, ASSET.BUYERS 購買者,
PARTSRETAIL.BRAND_NAME 產品品牌, PARTSRETAIL.MODEL_NAME 產品機型, WO.MECHANIC_NAME 維修技師,
CONVERT(varchar, PARTSRETAIL.FIXEDDATE, 111) 技師結單時間, PARTSRETAIL.STATE_NAME 維修狀態,
WO.MAINTAINEXPENSEAFTERDIS 折扣後維修工資, PARTSRETAIL.PARTSTOTALAFTERDIS 折扣後零件費用,
PARTSRETAIL.INTPARTSDISCOUNT 零件折扣, PARTSRETAIL.PARTSTOTALAFTERDIS 整筆零件折扣後金額,
PARTSRETAIL.TOTALAMOUNT 總計費用含稅, PARTSRETAIL.PAYTYPE_NAME 收款類別
FROM (PARTSRETAIL INNER JOIN ASSET ON PARTSRETAIL.PARTSRETAIL_NO = ASSET.ASSET_ID)
INNER JOIN WO ON PARTSRETAIL.PARTSRETAIL_NO = WO.ASSET_ID
WHERE (PARTSRETAIL.PARTSRETAIL_NO >= '2022%') AND (PARTSRETAIL.PARTSRETAIL_NO <= '2022%')
ORDER BY 登記單位
總共用到三個資料表分別為PARTSRETAIL(零件零售單),ASSET(產品註冊),WO(維修服務單)
但為何撈出資料是空白?
我的語法哪裡有錯嗎?
先把括號拿掉試試看.
FROM (PARTSRETAIL INNER JOIN ASSET ON PARTSRETAIL.PARTSRETAIL_NO = ASSET.ASSET_ID)
不行的話,
看你要不要提供測試的資料.
WHERE (PARTSRETAIL.PARTSRETAIL_NO >= '2022%') AND (PARTSRETAIL.PARTSRETAIL_NO <= '2022%')
我如果沒記錯的話,%是不是只能搭配like使用。
改成這樣試試
WHERE (PARTSRETAIL.PARTSRETAIL_NO like '2022%')
是JOIN的問題
SELECT PARTSRETAIL.REGISTERUNIT_NAME AS 登記單位, PARTSRETAIL.PARTSRETAIL_NO AS 整理單號, PARTSRETAIL.BUYERS AS 購買者,
PARTSRETAIL.BRAND_NAME AS 產品品牌, PARTSRETAIL.MODEL_NAME AS 產品機型, WO.MECHANIC_NAME AS 維修技師,
CONVERT(varchar, PARTSRETAIL.FIXEDDATE, 111) AS 技師結單時間, PARTSRETAIL.STATE_NAME AS 維修狀態,
WO.MAINTAINEXPENSEAFTERDIS AS 折扣後維修工資, PARTSRETAIL.PARTSTOTALAFTERDIS AS 折扣後零件費用,
PARTSRETAIL.INTPARTSDISCOUNT AS 零件折扣, PARTSRETAIL.PARTSTOTALAFTERDIS AS 整筆零件折扣後金額,
PARTSRETAIL.TOTALAMOUNT AS 總計費用含稅, PARTSRETAIL.PAYTYPE_NAME AS 收款類別
FROM PARTSRETAIL INNER JOIN
WO ON PARTSRETAIL.PARTSRETAIL_NO = WO.WO_NO
WHERE (PARTSRETAIL.PARTSRETAIL_NO LIKE '2022%')
ORDER BY 登記單位 DESC