我想将两个表合并为一个视图。
目前第一个表包含4列
ID | CatID | ImmID | Cost
第二个也是4列
ID | CatID | ImmID | Price
我想合并它们,以便合并的表格有5列
ID | CatId | ImmId | Cost | Price
如果两个表中都存在catID,我想只有一条记录 如果在两个表中的一个表中存在catID,我想在成本或价格列中加上0
3例。
这是我当前的查询
SELECT first.CatID, first.ImmID, first.Cost, 0
FROM costs first
UNION
SELECT second.CatID, second.ImmID, 0, second.Price
FROM prices second
但它不起作用,因为对于一个catID,返回两个记录
12| 15| 80| 1500 | 0
12| 15| 80| 0 | 700
而不是看起来像
的那个12| 15| 80| 1500| 700
答案 0 :(得分:0)
--This query will return only one row if ID is common**
SELECT a.Id, a.CatId, a.ImmID, a.Cost, b.Price
FROM first a, second b
WHERE a.CatID=b.CatID
union
--this query will return only value from first table with price 0**
SELECT a.Id, a.CatId, a.ImmID, a.Cost, 0
FROM first a, second b
WHERE a.CatID<>b.CatID
union
--this query will return only value from second table with cost 0**
SELECT b.Id, b.CatId, b.ImmID, 0, b.Price
FROM second b, first a
WHERE b.CatID<>a.CatID
答案 1 :(得分:0)
这可以解决这个问题吗?
SELECT second.ID, first.CatID, first.ImmID, first.Cost, second.Price
FROM costs first , prices second
WHERE first.CatID = second.CatID