我如何组合2个表并订购它

时间:2017-05-03 09:15:19

标签: sql laravel-5

所以我有2张桌子:

StockIn:

id   quantity   date        status_id
1    10         2017-05-01  1
2    20         2017-05-04  1
3    30         2017-05-06  1

StockTrf:

id   quantity   date        status_id
1    11         2017-05-02  1
2    21         2017-05-03  1
3    31         2017-05-05  1

我想将这两个表合并为一个按日期排序的表格,如:

id   quantity   date        status_id
1    10         2017-05-01  1
1    11         2017-05-02  1
2    21         2017-05-03  1
2    20         2017-05-04  1
3    31         2017-05-05  1
3    30         2017-05-06  1

我不知道如何结合它...有人可以帮助我吗?谢谢! 我正在使用laravel 5.2 btw,所以如果你知道一种更好的方法将它与laravel语法结合起来,我会很感激..

编辑:我需要将此表加入statuses表,以便我可以获取状态名称Activein-Active。那么如何在laravel中加入unionjoin

状态:

id   name
1    Active
2    In-Active

2 个答案:

答案 0 :(得分:1)

快速审核documentation会揭示如何做一个简单的UNION

$first = DB::table('StockIn');

$second = DB::table('StockTrf')
        ->unionAll($first)
        ->join('statuses', 'StockTrf.status_id', '=', 'statuses.id')
        ->orderBy('date', 'asc')
        ->get();

这对应于以下原始UNION查询:

SELECT *
FROM
(
    SELECT * FROM StockIn
    UNION ALL
    SELECT * FROM StockTrf
) t1
INNER JOIN statuses t2
    ON t1.status_id = t2.id
ORDER BY t1.date ASC

答案 1 :(得分:0)

使用UNION ALL声明:

 SELECT *
 FROM 
 (
   SELECT id ,  quantity ,  date   ,     status       
   FROM StockIn
   UNION  ALL
   SELECT id ,  quantity ,  date   ,     status       
   FROM StockTrf 
 ) A
 ORDER BY quantity