微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

向制造商展示在2010年销售手机但在2009年没有销售手机的制造商使用MYSQL

如何解决向制造商展示在2010年销售手机但在2009年没有销售手机的制造商使用MYSQL

SELECT Manufacturer_Name
FROM DIM_MANUFACTURER
     INNER JOIN DIM_MODEL ON DIM_MANUFACTURER.IDManufacturer = DIM_MODEL.IDManufacturer
    WHERE DIM_MANUFACTURER.IDManufacturer IN
          (
          SELECT DIM_MODEL.IDManufacturer
            FROM DIM_MODEL
            INNER JOIN FACT_TRANSACTIONS ON DIM_MODEL.IDModel = FACT_TRANSACTIONS.IDModel
             WHERE DIM_MODEL.IDMODEL IN 
             (
             SELECT FACT_TRANSACTIONS.IDModel
              FROM FACT_TRANSACTIONS
             WHERE IDModel NOT IN (YEAR(STR_TO_DATE(Date_d,'%m/%d/%Y')) = 2009) AND 
                IDModel In (YEAR(STR_TO_DATE(Date_d,'%m/%d/%Y')) = 2010)));

解决方法

嗯。 。 。我在考虑existsnot exists

select m.*
from dim_manufacturer m
where exists (select 1
              from transactions t join
                   dim_models mo
                   using (idmodel)
              where m.IDManufacturer = mo.IDManufacturer and
                    t.date_d >= '2010-01-01' and t.date_d < '2011-01-01'
             ) and
      not exists (select 1
                  from transactions t join
                       dim_models mo
                       using (idmodel)
                  where m.IDManufacturer = mo.IDManufacturer and
                        t.date_d >= '2009-01-01' and t.date_d < '2010-01-01'
                 ) ;
   

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。