将两个表合并为一个视图

时间:2013-11-20 17:50:20

标签: mysql sql merge union

我想将两个表合并为一个视图。

目前第一个表包含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  

2 个答案:

答案 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