2015-11-26 35 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