2017-09-14 44 views
0

我對編程非常(非常)新穎,我想加入兩個表格。 如果我正在單獨進行查詢,它可以工作,但我在加入時遇到問題。 這是我做了這麼遠:用不同時間連接表格

SELECT DISTINCT(MCH_CODE) as Machine, COUNT(SELL) AS Sells 
FROM SELLS 
WHERE STATUS = 'SOLD' AND SUBCODE = 'T' 
AND TIME >='2017-09-14 07:00:00' and STORE_CODE ='A101' 
GROUP BY MCH_CODE 

第二個:

SELECT DISTINCT(MCH_CODE) as Machine, COUNT(BARCODES) AS Scanned 
FROM SCANNED_TABLE 
WHERE TIME_STAMP >= '2017-09-14 07:00:00' AND STORE_CODE ='A101' 
GROUP BY MCH_CODE 

這是我走到這一步:

SELECT DISTINCT (dc.MCH_CODE) as Machine, COUNT(dc.SELL) AS Sells, COUNT(BARCODES) AS Scanned 
FROM SELLS AS dc 
INNER JOIN SCANNED_TABLE AS tr 
ON dc.STORE_CODE = tr.STORE_CODE 
WHERE dc.STATUS = 'SOLD' AND dc.SUBCODE = 'T' 
AND dc.TIME >='2017-09-14 07:00:00' and dc.STORE_CODE ='A101' 
GROUP BY dc.MCH_CODE 

我應該得到的東西像 該機售價掃描,但是當我加入表格的值不一樣。 是因爲時代嗎?如何正確加入表格?

+0

的'distinct'關鍵詞是沒有必要在這裏,因爲你組你的結果,這將在事實上給你不同的結果,不管你使用關鍵字與否。 – ssn

+0

你有不同的條件之間的條件之間的條件你有WHERE STATUS ='SOLD'和SUBCODE ='T'在第二個不是 – scaisEdge

+0

DISTINCT'是*不是一個函數,它是'SELECT DISTINCT'的一部分,並在整個選定的行上工作。刪除那些多餘的括號! (即,將'SELECT DISTINCT dc.MCH_CODE as Machine,...'。'' – jarlh

回答

1

你已經擁有你所需要的,可以加入他們的子查詢

SELECT t1.Machine, t1.Sells, t2.Scanned 
FROM 
    (SELECT MCH_CODE as Machine, COUNT(SELL) AS Sells 
    FROM SELLS 
    WHERE STATUS = 'SOLD' AND SUBCODE = 'T' 
    AND TIME >='2017-09-14 07:00:00' and STORE_CODE ='A101' 
    GROUP BY MCH_CODE) t1 
    INNER JOIN 
    (SELECT MCH_CODE as Machine, COUNT(BARCODES) AS Scanned 
    FROM SCANNED_TABLE 
    WHERE TIME_STAMP >= '2017-09-14 07:00:00' AND STORE_CODE ='A101' 
    GROUP BY MCH_CODE) t2 ON t1.Machine=t2.Machine 
0

嘗試這兩種說法結合在一起,而不是創建一個組合的加入。

試試這個:

SELECT 
    * 
FROM 
(
SELECT 
    MCH_CODE AS Machine 
    ,STORE_CODE 
    ,COUNT(SELL) AS Sells 
FROM 
    SELLS 
WHERE 
    STATUS = 'SOLD' 
    AND SUBCODE = 'T' 
    AND TIME >= '2017-09-14 07:00:00' 
    AND STORE_CODE = 'A101' 
GROUP BY 
    MCH_CODE 
) AS A 
INNER JOIN (
SELECT 
    MCH_CODE AS Machine 
    ,STORE_CODE 
    ,COUNT(BARCODES) AS Scanned 
FROM 
    SCANNED_TABLE 
WHERE 
    TIME_STAMP >= '2017-09-14 07:00:00' 
    AND STORE_CODE = 'A101' 
GROUP BY 
    MCH_CODE 
) AS B ON A.STORE_CODE = B.STORE_CODE AND A.Machine = B.Machine