2017-04-15 76 views
0

我在不同的表中有兩個同名的列。 我想將它們合併到視圖中的一列中。從2個表中選擇同一列到視圖中的1列

這裏我的第一臺stocks

+----------+------------+------------+---------+----------------+--------+ 
| stock_id | stock_cost | stock_left | item_id | purchasedtl_id | trx_id | 
+----------+------------+------------+---------+----------------+--------+ 
|  1 |  1000 |   0 |  1 |    1 |  1 | 
|  2 |  1000 |   5 |  1 |    2 |  2 | 
|  3 |  1000 |   1 |  1 |    3 |  4 | 
+----------+------------+------------+---------+----------------+--------+ 

二表stocks_out

+-------------+----------------+--------------+---------+----------+------------+--------+ 
| stockout_id | stockout_price | stockout_qty | item_id | stock_id | saledtl_id | trx_id | 
+-------------+----------------+--------------+---------+----------+------------+--------+ 
|   1 |   2000 |   1 |  1 |  1 |   1 |  3 | 
+-------------+----------------+--------------+---------+----------+------------+--------+ 

而且我想加入他們是這樣trx_id, trx_no, trx_closetime, trx_type stock_id, stock_cost, stockout_id, stock_out_cost, stockout_price, item_id

item_id是我想加盟領域在一列中。

當前的查詢是:

select `transactions`.`trx_id` AS `trx_id`,`transactions`.`trx_no` AS `trx_no`,`transactions`.`trx_closetime` AS `trx_closetime`,`transactions`.`trx_type` AS `trx_type`,`stocks`.`stock_id` AS `stock_id`,`stocks`.`stock_cost` AS `stock_cost`,`stock_out`.`stockout_id` AS `stockout_id`,`stock_out`.`stockout_price` AS `stockout_price` from ((`transactions` left join `stocks` on(`stocks`.`trx_id` = `transactions`.`trx_id`)) left join `stock_out` on(`stock_out`.`trx_id` = `transactions`.`trx_id`)) order by `transactions`.`trx_closetime`; 

而目前的結果是:

+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+ 
| trx_id | trx_no    | trx_closetime  | trx_type | stock_id | stock_cost | stockout_id | stockout_price | 
+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+ 
|  1 | 02002-02-170415-001 | 2017-04-15 19:40:03 | 2  |  1 |  1000 |  NULL |   NULL | 
|  2 | 02002-02-170415-002 | 2017-04-15 19:40:13 | 2  |  2 |  1000 |  NULL |   NULL | 
|  3 | 02002-01-170415-001 | 2017-04-15 19:40:57 | 1  |  NULL |  NULL |   1 |   2000 | 
|  4 | 02002-02-170415-003 | 2017-04-15 19:41:14 | 2  |  3 |  1000 |  NULL |   NULL | 
+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+ 
+0

你的樣本數據和查詢也沒什麼共同。您應該說明這一點,以便說明,數據和查詢匹配。例如,您的示例結果集中沒有'item_id'。 –

+0

我找到了答案。無論如何感謝@GordonLinoff!其實我忘了解釋一個事務不能在2個表中。 – rh123

回答

0

發現這傢伙。 我只需要添加下面的查詢列

COALESCE(`stocks`.`item_id`, `stocks_out`.`item_id`) AS `item_id` 

所以查詢會像

select `transactions`.`trx_id` AS `trx_id`,`transactions`.`trx_no` AS `trx_no`,`transactions`.`trx_closetime` AS `trx_closetime`,`transactions`.`trx_type` AS `trx_type`,`stocks`.`stock_id` AS `stock_id`,`stocks`.`stock_cost` AS `stock_cost`,`stock_out`.`stockout_id` AS `stockout_id`,`stock_out`.`stockout_price` AS `stockout_price`, COALESCE(`stocks`.`item_id`, `stocks_out`.`item_id`) AS `item_id from ((`transactions` left join `stocks` on(`stocks`.`trx_id` = `transactions`.`trx_id`)) left join `stock_out` on(`stock_out`.`trx_id` = `transactions`.`trx_id`)) order by `transactions`.`trx_closetime`; 

而結果:

+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+---------+ 
| trx_id | trx_no    | trx_closetime  | trx_type | stock_id | stock_cost | stockout_id | stockout_price | item_id | 
+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+---------+ 
|  1 | 02002-02-170415-001 | 2017-04-15 19:40:03 | 2  |  1 |  1000 |  NULL |   NULL |  1 | 
|  2 | 02002-02-170415-002 | 2017-04-15 19:40:13 | 2  |  2 |  1000 |  NULL |   NULL |  1 | 
|  3 | 02002-01-170415-001 | 2017-04-15 19:40:57 | 1  |  NULL |  NULL |   1 |   2000 |  1 | 
|  4 | 02002-02-170415-003 | 2017-04-15 19:41:14 | 2  |  3 |  1000 |  NULL |   NULL |  1 | 
+--------+---------------------+---------------------+----------+----------+------------+-------------+----------------+---------+ 
相關問題