2016-10-29 29 views
-2

我有2个表,LEFT JOIN SQL但不同

A.Table销售

Code | qty_sales Values 
A | 10 
B | 20 

B.表少爷

Code | Style 
A | AA10 
A | AA12 
B | BB10 

而且我想要的结果是这样的:

Code | Style | qty 
A | A10 | 10 
B | BB10 | 20 

我只想得到2种风格之一换码

+1

“LEFT JOIN SQL,但不同”您的标题本身可以解决它 – Treycos

回答

0

补充了戈登·利诺夫

最后的答案,我只是改变 “m.style” 到 “c.style”。

select s.code, c.style , s.qty_sales 
from sales s join 
(select m.code, max(m.style) as style 
    from master m 
    group by m.code 
) c 
on s.code = c.code; 

我同意你将需要一个“规则”来获得主表的一个注册表。 我上面Gordon Linoff的例子使用了MAX命令。

+0

谢谢,查询是正确的 – Henry

0

有在不同的数据库不同的方式,但在这里是一个:

select s.code, c.style, s.qty_sales 
from sales s join 
    (select m.code, max(m.style) as style 
     from master m 
     group by m.code 
    ) c 
    on s.code = c.code; 

这是ANSI标准的代码。它不选择任意风格;它选择最大值(按字母顺序)。

A LEFT JOIN不需要,因为代码在两个表中匹配。

0

无子查询:

select m.code, min(m.style) as style, min(s.qty_sales) as qty_sales 
from master m join sales s on s.code=m.code 
group by m.code