2015-11-26 44 views
-2

所以,MySQL的 - 左加入+集團的預期

我已經使用LEFT JOIN再一次次不工作,我從來沒有經歷過與它的問題到現在爲止,我不能爲我的生活解決它!請看一下。

這是我正在使用的表格中的一小部分數據。 -

ITEM_NO R_TYPE POS 
394392   BT1 POS1 
394392   BT1 POS1 
394392   BT1 POS1 
394392   BT1 POS1 
394392   BT1 POS1 
394392   BT2 POS2 
394392   BT2 POS2 
394392   BT2 POS2 
394397   BT1 POS1 
394397   BT1 POS1 
394397   BT1 POS3 
394397   BT1 POS3 
394397   BT1 POS2 
394397   BT2 POS2 
394397   BT2 POS1 
394397   BT2 POS1 
394444   BT3 POS1 

我想運行一個左連接查詢計數不同編號的通過R_TYPE

Here is the SQL I have tried - 

SELECT * FROM 
      (SELECT COUNT(DISTINCT ITEM_NO) AS CNT1, R_TYPE, 
      FROM LIVE_ITEMS WHERE AND R_TYPE LIKE 'BT%' AND 
      POS NOT IN ('POS8')) J1 
      LEFT JOIN 
      (SELECT COUNT(DISTINCT ITEM_NO) AS CNT2, R_TYPE, 
      FROM LIVE_ITEMS WHERE AND R_TYPE LIKE 'BT%' AND 
      POS IN ('POS1','POS2','POS3')) J2 
      ON J1.R_TYPE= J2.R_TYPE 
      GROUP BY J1.R_TYPE 

有一定POS指標分析,最後將它們分組如果我運行這個SQL我得到以下結果 -

CNT1 R_TYPE CNT2 R_TYPE 
137  BT1  137  BT1 

這不正是我想要的,我期待下面的和無法理解爲什麼..

預期的數據 -

CNT1 R_TYPE CNT2 R_TYPE 
137  BT1  137  BT1 
45  BT2  76  BT2 
98  BT3  102  BT3 

有什麼建議?

回答

1

更正了您的查詢。請檢查。

SELECT * FROM 
     (SELECT COUNT(DISTINCT a.ITEM_NO) AS CNT1, a.R_TYPE 
      FROM LIVE_ITEMS a 
     WHERE a.R_TYPE LIKE 'BT%' 
      AND a.POS NOT IN ('POS8') 
     GROUP BY a.R_TYPE) J1 
    LEFT JOIN 
     (SELECT COUNT(DISTINCT b.ITEM_NO) AS CNT2, b.R_TYPE 
      FROM LIVE_ITEMS b 
      WHERE b.R_TYPE LIKE 'BT%' 
      AND b.POS IN ('POS1','POS2','POS3') 
     GROUP BY b.R_TYPE) J2 
    ON J1.R_TYPE= J2.R_TYPE 
GROUP BY J1.R_TYPE 
+0

編輯就其價值..這並不是一個加入..我剛剛刪除了很多的SQL列,使其易消化。 – SK2017

+0

這會產生一個錯誤...#1052 - 字段列表中的列'R_TYPE'不明確,我嘗試添加J1.R_TYPE和J2.R_TYPE,並且仍然出現錯誤。 – SK2017

+0

我修改了我的查詢。現在試試吧 – PK20

1

沒有GROUP BY,有一個組,這是不確定的組

SELECT * FROM 
    (SELECT COUNT(DISTINCT LIVE_ITEMS.ITEM_NO) AS CNT1, LIVE_ITEMS.R_TYPE, 
    FROM LIVE_ITEMS WHERE LIVE_ITEMS.R_TYPE LIKE 'BT%' AND 
    LIVE_ITEMS.POS NOT IN ('POS8') GROUP BY LIVE_ITEMS.R_TYPE) J1 
    LEFT JOIN 
    (SELECT COUNT(DISTINCT LIVE_ITEMS.ITEM_NO) AS CNT2, LIVE_ITEMS.R_TYPE, 
    FROM LIVE_ITEMS WHERE LIVE_ITEMS.R_TYPE LIKE 'BT%' AND 
    LIVE_ITEMS.POS IN ('POS1','POS2','POS3') GROUP BY LIVE_ITEMS.R_TYPE) J2 
    AND J1.R_TYPE= J2.R_TYPE 
    GROUP BY J1.R_TYPE 

沒有通過集團向COUNT(DISTINCT ITEM_NO)選擇總是給一個結果

+0

這會產生一個錯誤...#1052 - 字段列表中的列'R_TYPE'不明確,我嘗試添加J1.R_TYPE和J2.R_TYPE,並且仍然出錯。 – SK2017

+0

LIVE_ITEMS.R_TYPE請試試這個@Dan –

+0

這會產生這個錯誤。 。 「#1052 - 在字段列表列 'R_TYPE' 不明確」 再次 – SK2017