SQL Query从一个表中获取所有记录并在另一个表上加入,包括任何其他唯一记录

时间:2015-08-11 10:04:27

标签: mysql sql select distinct

我需要从两个表中获取每个唯一的批号,包括产品代码,收到的日期,到期日期和数量。

我有一张唯一批次需要日期(bmwohm)的表和一张批次与日期(有些重复)(stquem)的表格。

我可以从bmwohm中选择唯一的批号(works_order),这将返回正确的数据但是对于第二个表,我需要找到第一个匹配的批号和相关的字段(因为有些是重复的),包括所有批次的' t包含在第一个查询中。

这是我对bmwohm表的查询:

select works_order, product_code, quantity_required
from bmwohm
where warehouse = 'W1' or warehouse = 'W3'

这是我对stquem表的不正确的不同查询:

select distinct on(batch_number), prod_code, date_received, expiry_date, quantity
from stquem
where warehouse = 'W1' or warehouse = 'W3'

我如何返回不同的批次以及与该记录关联的字段?

我尝试通过右连接将两者合并,使用以下方式返回数量字段和产品代码:

select works_order, product_code, quantity_required, batch_number, prod_code,
        date_received, expiry_date, quantity
from bmwohm as uniqueLots
right join scheme.stquem as duplicateLots
on uniqueLots.works_order = (select distinct duplicateLots.batch_number) 
where (uniqueLots.warehouse = 'W1' or uniqueLots.warehouse = 'W3')
and (duplicateLots.warehouse = 'W1' or duplicateLots.warehouse = 'W3')

如何将两者结合起来以获得具有额外四个字段的唯一批次的结果?

1 个答案:

答案 0 :(得分:0)

尝试修改您的查询有点像

select distinct b.works_order, 
                b.product_code, 
                b.quantity_required, 
                s.batch_number, 
                s.prod_code,
                s.date_received, 
                s.expiry_date, 
                s.quantity
from bmwohm b
join scheme.stquem s
on b.works_order = s.batch_number 
where b.warehouse in ('W1','W3')
and s.warehouse in ('W1' , 'W3');