【问题标题】:Query with Join condition [closed]查询加入条件[关闭]
【发布时间】:2014-01-27 23:29:48
【问题描述】:

我必须编写一个查询,通过检查 REFID 和 ORGID 这两个值来对 table1 和 table2 进行相关连接,以获得如下所示的 OUTPUT TABLE。

Table1:

REFID      ORGID    Artikel_ID   ORGID_ARTIKEL  Price
1001       1234     M123             1314         2,2
1001       1235     M124             1314         15,2
1001       1234     M125             1322         20,5

Table2:

REFID      ORGID    MATNR    Turnover   Reduced_Turunover
1001       1234     1886     8000,6         2500,0
1001       1235     1886     9000,6         6500,0

Ouput Table:

REFID      ORGID    Artikel_ID   ORGID_ARTIKEL  Price      MATNR    Turnover   Reduced_Turunover
1001       1234     M123             1314         2,2      1886      8000,6     2500,0
1001       1235     M124             1314         15,2     1886      9000,6     6500,0
1001       1234     M125             1322         20,5      1886     8000,6     2500,0

我尝试了以下方法:

select T0."REFID"
     , T0."ORGID_WE"
     , T0."ARTIKEL_ID"
     , T0."ORGID_ARTIKEL"
     , sum(T0."Price")as Price
     , T1."MATNR"
     , T1."ORGID"
     , T1."VNTHW"
     , T1."Turnover"
     , T1."reduced_turnover"
  from TABLE1 T0 
 Inner Join 
       TABLE2 T1 
    on T0."REFID"=T1."REFID"
     , T0."ORGID"=T1."ORGID"

首先,我想问一下我是否可以像上面那样使用两个条件。如果没有,你能帮我处理以下内容吗?

谢谢

【问题讨论】:

  • 谁能给我一个被否决的理由?
  • 您是否使用“,”作为小数分隔符?
  • 这可能是因为人们希望你展示你尝试过的东西以及为什么它不起作用,而不是让我们从空白页开始。
  • 你问的是基本的mysql用法,你甚至没有尝试解决它,请阅读JOIN Syntax。我没有投反对票。只是解释原因。
  • 谢谢。那是我的错。我尝试了几个小时,我努力在这里发布只是因为我找不到解决方案。也许我会更新我的问题

标签: mysql sql sql-server select join


【解决方案1】:

您可以使用多个条件,但您必须将它们与and 放在一起,而不是,。 还有sum()只能在分组时使用。

select T0."REFID"
     , T0."ORGID"
     , T0."Artikel_ID"
     , T0."ORGID_ARTIKEL"
     , T0."Price"
     , T1."MATNR"
     , T1."Turnover"
     , T1."reduced_turnover"
  from TABLE1 T0 
 Inner Join 
       TABLE2 T1 
    on T0."REFID"=T1."REFID"
   and T0."ORGID"=T1."ORGID"

【讨论】:

    【解决方案2】:

    这是一个非常基本的问题。你想加入两个表:

    select * from table1 join table2 using (refid, orgid);
    

    【讨论】:

    • 我刚刚更新了我的问题。请调查一下。很抱歉给您带来不便。
    • 是的,您可以使用 ON 而不是 USING。只是,不要用 AND 分隔您的条件,而不是用逗号分隔: ... on T0."REFID"=T1."REFID" and T0."ORGID"=T1."ORGID"
    • 下一个问题:聚合事物(COUNT、SUM 等)时,您必须声明要聚合的组。
    • '你必须声明组'这实际上意味着什么。你能简单介绍一下吗?谢谢
    • 使用 GROUP BY。您选择的所有字段必须在 group by 列表中或聚合(例如 select a, b, min(c), sum(d) from t where ... group by a, b;)
    猜你喜欢
    • 2021-12-02
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多