UNION两张桌子

时间:2018-01-12 00:45:19

标签: sql ms-access

我有一个TICKET表,用户可以将记录与Supplier_ID表中的SUPPLIER相关联,也可以手动输入供应商名称(Supplier_ID 1}} = 0)用于快速票据记录,以避免为终身供应商购买中的一个创建供应商记录(填写20个供应商字段)。

Ticket_ID | Supplier_ID  | Supplier
--------------------------------------
1         |       0      | A Company
2         |       0      | Inc. Co
3         |      10      | 
4         |      1       | 

SUPPLIER表看起来像(加上其他20个字段)

Supplier_ID | Supplier
-------------------------
1           |  A Company
2           |  B Company
3           |  C Company 
4           |  D Company 

现在我想为每个独特的供应商提供一个自动填充文本框(所有这些都来自SUPPLIER表和TICKET表中的那些名称,其中Supplier_ID = 0但与供应商的任何供应商名称都不匹配

到目前为止,我已经进入了MS ACCESS SQL

SELECT Supplier_ID, Supplier FROM SUPPLIER

UNION ALL

SELECT Supplier_ID, Supplier FROM TICKET WHERE Supplier_ID = 0 AND Supplier <> '' GROUP BY Supplier, Supplier_ID

输出

Supplier_ID | Supplier
-------------------------
1           |  A Company
2           |  B Company
3           |  C Company 
4           |  D Company 
0           |  A Company 
0           |  Inc. Co. 

工作几乎没问题,除了有两个A公司(一个有supplier_id 1,一个有0)。我想避免添加ID = 0

的副本

有可能吗?

1 个答案:

答案 0 :(得分:3)

我认为您希望从查询的第一部分中排除任何供应商。所以:

SELECT Supplier_ID, Supplier
FROM SUPPLIER
UNION ALL
SELECT DISTINCT Supplier_ID, Supplier
FROM TICKET as t
WHERE t.Supplier <> "" AND
      t.Supplier NOT IN (SELECT s.Supplier FROM Supplier as s);