mysql中的left join和where子句

时间:2014-04-21 04:43:18

标签: mysql left-join where-clause

这里我有问题加入表,所以我尝试左连接和条件,但我没有得到一个例外的结果。我是mysql的新手所以可以有一个帮助这个

查询:

SELECT 
m.mon, 
m.monthnames,
d.Outlet_Name, 
e.category_Name, 
f.Department_Name,
b.Item_Name, 
SUM(a.Item_Qty) AS Qty, 
SUM(a.Net_amount+a.Item_tax1) AS NetAmount 
 FROM (
    SELECT 1 AS mon, 'Jan' AS monthnames
    UNION
    SELECT 2, 'Feb'
    UNION
    SELECT 3, 'Mar'
    UNION   
    SELECT 4, 'Apr'
    UNION
    SELECT 5, 'May'
    UNION
    SELECT 6, 'jun'
    UNION
    SELECT 7, 'july'
    UNION
    SELECT 8, 'Aug'
    UNION
    SELECT 9, 'Sep'
    UNION
    SELECT 10, 'Oct'
    UNION
    SELECT 11, 'NoV'
    UNION
    SELECT 12, 'Dec'
       ) AS monthno
  LEFT JOIN KOT_Items a 
  ON MONTH(a.tran_date) = m.mon
   Item_Master b,
        KOT_Main c,
        Outlet d,
        Category_Master e,
        Department_Master f,
  WHERE a.Main_Item_Code=b.Item_Code
  AND e.Category_Code=b.Category_Code
  AND e.Category_Code =f.Category_Code
  AND d.Outlet_id = c.outlet_id
  AND a.ref_no=c.ref_no
  GROUP BY 
   m.mon, 
   m.monthnames, 
   d.Outlet_Name,
   e.category_Name, 
   f.Department_Name, 
   b.Item_Name

例外结果如下:

mon monthnames Outlet_Name      netamount

4   Apr MEXICAN AMIGOS           1
4   Apr MEXICAN AMIGOS           100
4   Apr MEXICAN AMIGOS           150
4   Apr MEXICAN AMIGOS           1500
4   Apr MEXICAN AMIGOS  
4   Apr MEXICAN AMIGOS  
4   Apr MEXICAN AMIGOS      
4   Apr MEXICAN AMIGOS  
4   Apr MEXICAN AMIGOS  
1   jan
2   feb
3   mar
5   may
6   june
7   july
8   Aug
9   Sep
10  Oct
11  nov
12  Dec

1 个答案:

答案 0 :(得分:0)

我不确定您的桌面结构或您的要求。 如果您正在寻找的话,我已经向您展示了语法。

SELECT
m.mon,
m.monthnames,
d.Outlet_Name, 
e.category_Name, 
f.Department_Name,
b.Item_Name, 
SUM(a.Item_Qty) AS Qty, 
SUM(a.Net_amount+a.Item_tax1) AS NetAmount 
FROM (
    SELECT 1 AS mon, 'Jan' AS monthnames
    UNION
    SELECT 2, 'Feb'
    UNION
    SELECT 3, 'Mar'
    UNION
    SELECT 4, 'Apr'
    UNION
    SELECT 5, 'May'
    UNION
    SELECT 6, 'jun'
    UNION
    SELECT 7, 'july'
    UNION
    SELECT 8, 'Aug'
    UNION
    SELECT 9, 'Sep'
    UNION
    SELECT 10, 'Oct'
    UNION
    SELECT 11, 'NoV'
    UNION
    SELECT 12, 'Dec'
       ) AS m
  LEFT JOIN KOT_Items a
  ON MONTH(a.tran_date) = m.mon
  LEFT JOIN  Item_Master b
  ON a.Main_Item_Code=b.Item_Code
  LEFT JOIN KOT_Main c
  ON a.ref_no=c.ref_no
  LEFT JOIN   Outlet d
  ON d.Outlet_id = c.outlet_id
  LEFT JOIN  Category_Master e
  ON e.Category_Code=b.Category_Code
  LEFT JOIN  Department_Master f
  ON e.Category_Code =f.Category_Code
  GROUP BY
   m.mon,
   m.monthnames,
   d.Outlet_Name,
   e.category_Name,
   f.Department_Name,
   b.Item_Name
相关问题