简体   繁体   English

SQL连接三个表并拆分为列

[英]SQL joining three tables and split into columns

I have three tables, mess_stock , mess_voucher , add_grocery . 我有三个表, mess_stockmess_voucheradd_grocery

Mess_stock table is below, 下表为Mess_stock,

+-----+------------+-----------------+-----------------+--------+---------+---------+------------+----------+
| sno | voucher_id | particular_name | opening_balance | inward | outward | balance | pay_amount | pay_type |
+-----+------------+-----------------+-----------------+--------+---------+---------+------------+----------+
|  49 |          5 | 4               |             100 |     10 |     100 |      10 |      10.00 |        1 |
|  50 |         17 | 5               |             111 |     10 |      20 |     101 |      60.00 |        1 |
|  51 |          7 | 3               |             123 |      2 |       1 |     124 |     300.00 |        1 |
|  52 |          7 | 1               |             123 |     20 |      20 |     123 |     500.00 |        2 |
|  53 |         14 | 8               |             100 |      5 |      95 |      10 |      60.00 |        2 |
+-----+------------+-----------------+-----------------+--------+---------+---------+------------+----------+

Mess_voucher table is below 下面是Mess_voucher表

+------------+--------------+--------------+
| voucher_id | voucher_name | voucher_date |
+------------+--------------+--------------+
|          5 | VG1001       | 2015-02-19   |
|          6 | VG1001       | 2015-02-20   |
|          7 | VG1002       | 2015-02-20   |
|          8 | VG1002       | 2015-02-19   |
|          9 | MS1001       | 2015-02-20   |
|         10 | VG10012      | 2015-02-19   |
|         11 | 0            | 2015-02-23   |
|         12 | 1            | 2015-02-24   |
|         13 | MS1001       | 2015-02-25   |
|         14 | MS1001       | 2015-02-28   |
|         15 | VG1003       | 2015-02-28   |
|         16 | MS1001       | 2015-02-19   |
|         17 | MS1001       | 2015-02-21   |
+------------+--------------+--------------+

Add_grocery table is below Add_grocery表在下面

+-----+-----------------+------------------+
| sno | particular_name | particular_price |
+-----+-----------------+------------------+
|   1 | Rice            |            25.00 |
|   3 | Mango           |           150.00 |
|   4 | Coconut         |            22.00 |
|   5 | Banana          |             6.00 |
|   6 | Raddish         |            12.00 |
|   7 | Apple           |           150.00 |
|   8 | Pumkin          |            12.00 |
+-----+-----------------+------------------+

I want to group the sum of pay_amount of mess_stock table. 我想将mess_stock表的pay_amount总和分组。 I have used the below query 我用下面的查询

SELECT opening_balance AS ope_stock, 
       balance AS clo_stock, 
       SUM(IF(pay_type = 1, pay_amount, 0)) mess_pay,
       SUM(IF(pay_type=2, pay_amount, 0)) est_pay 
FROM mess_stock;

That works fine. 很好 The particular_name is the auto increment id of add_grocery table. specific_name是add_grocery表的自动增量ID。 I need the inward outward amount total. 我需要总共向内的金额。 For example the inward amount 10 means it has to get the particular_price from add_grocery using the particular_name provided in the mess_stock table, similarly I need all the answer. 例如向内量10意味着它必须得到particular_priceadd_grocery使用particular_name在提供mess_stock表,同样我需要所有的答案。 And I want to sort that by date wise. 我想按日期排序。 The date of the entry is stored in the mess_voucher table that is connected to mess_stock table. 的条目的日期被存储在mess_voucher连接到表mess_stock表。

Try this it will work : 试试这个将起作用:

Use Inner Join : 使用内部联接:

SELECT t2.`particular_name`,t1.`inward`,t1.`outward`,t2.`particular_price`,t3.`voucher_date` from Mess_stock t1 JOIN Add_grocery t2 ON t1.`particular_name`=t2.`sno` JOIN Mess_voucher t3 ON t3.`voucher_id`=t1.`voucher_id` ORDER BY t3.`voucher_date` DESC 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM