我正在努力编写查询,并且事实上不知道哪个查询与任务相关(联盟,内部/外部联接等)
我有一个每周修订的数据表,我需要报告差异。
,即如果它在表1中删除,则表2或字段会更改。
我已经包含了一张图片来显示修改后的表中的数据,以及我想要作为报告输出的内容(忽略评论,它们仅供参考)
任何帮助都将不胜感激。
答案 0 :(得分:0)
FULL OUTER JOIN
要查找表1或表2中的任何行并尽可能对齐它们,然后您可以使用CASE
根据AREA
的比较创建评论列,或者NAME
为空。
但MS ACCESS没有FULL JOIN
所以我们需要LEFT JOIN UNION RIGHT JOIN
。
同样CASE
语句是VB语法,使用switch
SELECT
t1.*,
t2.*,
switch(
t2.name IS NULL,'IN TABLE 1 ONLY',
t1.area <> t2.area,'IN TABLE 1 AND 2 SAME NAME BUT AREA DIFFERENT IN TABLE 2',
true,'IN TABLE 1 AND 2 AND EQUAL')
FROM table1 AS t1
LEFT JOIN table2 AS t2
ON t1.name = t2.name
UNION
SELECT
t1.*,
t2.*,
switch(
t1.name IS NULL,'IN TABLE 2 ONLY, OMITTED IN TABLE 1',
t1.area <> t2.area,'IN TABLE 1 AND 2 SAME NAME BUT AREA DIFFERENT IN TABLE 2',
true,'IN TABLE 1 AND 2 AND EQUAL')
FROM table1 AS t1
RIGHT JOIN table2 AS t2
ON t1.name = t2.name
答案 1 :(得分:0)
我不相信访问支持完全外连接......
所以......我们使用左连接和右连接以及一个联合以及一个case语句。
// Bind your Machines to your DropDownList
MachinesDropDown.DataSource = GetMachineInfo(xDoc, 2);
// Set your text / value properties
MachinesDropDown.DataTextField = "snsrN";
MachinesDropDown.DataValueField = "orignalPathId";
// Actually bind the contents to be reflected in the UI
MachinesDropDown.DataBind();