2015-10-06 72 views
-1

所以,我想結合兩個表使用聯合訂單取代購物車。對於聯盟的查詢看起來是這樣的:SQL Union幫助 - 結果是逆向的

SELECT o1.EMAILADDRESS, o1.EVENTNAME 
FROM ZZ001Email1RegionOrdersFinal o1 
WHERE o1.EMAILADDRESS = '[email protected]' 

UNION 

SELECT c1.EMAILADDRESS, c1.EVENTNAME 
FROM ZZ001Email1RegionCartsFinal c1 
WHERE c1.EMAILADDRESS = '[email protected]' 

附上結果,訂單查詢就有和工會有結果(這是用戶購物車)。我想知道爲什麼訂單不會按照它應該覆蓋購物車。

左側圖像是剛剛運行頂部(訂單)查詢的結果,正確的圖像是運行聯合查詢的結果,而購物車在結果時應該導致訂單。

OrderResults UnionResults

+0

請不要發佈[在網絡的多個網站使用同一個問題(http://salesforce.stackexchange.com/questions/94889/sql-union-no-好好工作)。 – cybermonkey

+0

呵呵? 「我想知道爲什麼訂單不會覆蓋購物車,因爲它應該是」 –

+0

德爾文 - 這也是我想知道的。 鮑勃 - 我被告知我張貼在那裏的錯誤部分,所以我張貼在這裏。 – user1799048

回答

0

記住,表被定義爲無序組記錄。

查詢的順序由ORDER BY子句確定。 ORDER BY條款是只有方式來保證記錄的順序。你還沒有ORDER BY,所以你的關係型數據庫爲你提供了一個方便的訂單。

試試這個:

SELECT DISTINCT U.EMAILADDRESS, U.EVENTNAME 
FROM (
    SELECT 1 AS OrderColumn, o1.EMAILADDRESS, o1.EVENTNAME 
    FROM ZZ001Email1RegionOrdersFinal o1 
    WHERE o1.EMAILADDRESS = '[email protected]' 

    UNION ALL 

    SELECT 2 AS OrderColumn, c1.EMAILADDRESS, c1.EVENTNAME 
    FROM ZZ001Email1RegionCartsFinal c1 
    WHERE c1.EMAILADDRESS = '[email protected]') U 
ORDER BY U.OrderColumn;