合并两个表的行

时间:2014-04-06 08:59:08

标签: mysql

我有两个表,我想根据字段合并他们的行。我将欣赏这个任务的简单的SQL代码。例如
表格1。叫:余额

PubID | Year | StudID |DrAmt| CrAmt| Desc|
------------------------------------------
12    | 2012 | OK1    | 100 | 0    | Bal c/f
11    | 2012 | OK2    | 250 | 0    | Bal c/f
10    | 2012 | OK3    | 0   | 50   | Bal c/f
12    | 2012 | OK4    | 10  | 0    | Bal c/f


表2。叫:balances_detail

PubID | Items      | DrAmt | CrAmt|
-----------------------------------
12    | Stationary | 10    | 0
12    | Pendrive   | 30    | 0
12    | Utility    | 40    | 0
11    | Stationary | 5     | 0
11    | Pendrive   | 30    | 0
11    | Utility    | 10    | 0 

等等。
我现在想要像这张桌子一样的结果。此表包含studID及其bal c / f以及每个PubID的balances_detail。我只需要一个DrAmt列和一个CrAmt列,它将包含两个表和Desc列中的行:

PubID | Year | StudID |DrAmt| CrAmt| Desc|
------------------------------------------
12    | 2012 | OK1    | 100 | 0    | Bal c/f
12    | 2012 | OK1    | 10  | 0    | Stationary
12    | 2012 | OK1    | 30  | 0    | Pendrive
12    | 2012 | OK1    | 40  | 0    | Utility
11    | 2012 | OK2    | 250 | 0    | Bal c/f
11    | 2012 | OK2    | 5   | 0    | Stationary
11    | 2012 | OK2    | 30  | 0    | Pendrive 
11    | 2012 | OK2    | 10  | 0    | Utility  

2 个答案:

答案 0 :(得分:0)

据我所知,您无法合并这两个表,因为结果表有两列:

StudID
Desc

哪个不是balances_detail表的一部分。如果这两列是balances_detail表的一部分,那么您可以在sql语句中使用具有约束的Union关键字:

  

请注意,UNION中的每个SELECT语句必须具有相同的名称   列数。列还必须具有类似的数据类型。   此外,每个SELECT语句中的列必须具有相同的顺序。

请查看此link,了解有关联盟'关键字

答案 1 :(得分:0)

您在寻找

吗?
    SELECT b.PubID, a.Year, a.StudID, b.DrAmt, b.CrAmt, b.Items AS Description 
    FROM Table2 b
    JOIN Table1 a ON a.PubID=b.PubID
    UNION
    SELECT a.PubID, a.Year, a.StudID, a.DrAmt, a.CrAmt, a.Description
    FROM Table1 a
    ORDER BY 1,2,3