表加入时组Concat

时间:2017-09-25 13:57:03

标签: mysql

我正在尝试使用分隔符连接ExpenseNumbers,其中列PK_TransID = FK_trans是相同的。它肯定涉及group by和group_concat但不知何故我不能让它工作。如果您需要一些额外的信息,请询问。

表结构

表wydatki

server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=secret
server.ssl.key-password=another-secret

表pracownik_bank

| id_wydatku |       dokument |
|------------|----------------|
|        111 |        0070317 |
|        112 |   4642k1045917 |
|        113 |  10235k1071417 |
|        116 |   9948k2054917 |
|        119 |  10039k3071417 |

表wydatki_bank

| id_transakcji |          trans_type |   price |
|---------------|---------------------|---------|
|             1 | Wypłata z bankomatu |    -300 |
|             2 | Wypłata z bankomatu |    -300 |
|             3 |      Płatność kartą |  -25.48 |
|             4 | Wypłata z bankomatu |    -500 |
|             5 |      Płatność kartą |     -94 |
|             6 |      Płatność kartą |   -3.28 |
|             7 |      Płatność kartą |     -65 |

http://sqlfiddle.com/#!9/a4713/14

期望的输出

| id_powiazania | fk_transakcji | fk_wydatku |
|---------------|---------------|------------|
|             1 |             6 |        121 |
|             2 |             9 |        115 |
|             3 |            12 |        110 |
|             4 |            15 |        118 |
|             5 |            16 |        111 |
|             6 |            16 |        112 |
|             7 |            16 |        113 |
|             8 |            16 |        116 |
|             9 |            14 |        123 |



|    PK_ | FK_trans | PK_TransID = FK_trans | FK_expense |  ExpenseNumber |
|--------|----------|-----------------------|------------|----------------|
| (null) |   (null) |                     1 |     (null) |         (null) |
| (null) |   (null) |                     2 |     (null) |         (null) |
| (null) |   (null) |                     3 |     (null) |         (null) |
| (null) |   (null) |                     4 |     (null) |         (null) |
| (null) |   (null) |                     5 |     (null) |         (null) |
|      1 |        6 |                     6 |        121 |    378cb082017 |
| (null) |   (null) |                     7 |     (null) |         (null) |
| (null) |   (null) |                     8 |     (null) |         (null) |
|      2 |        9 |                     9 |        115 |         (null) |
| (null) |   (null) |                    10 |     (null) |         (null) |
| (null) |   (null) |                    11 |     (null) |         (null) |
|      3 |       12 |                    12 |        110 |         (null) |
| (null) |   (null) |                    13 |     (null) |         (null) |
|      9 |       14 |                    14 |        123 | 22650820170301 |
|      4 |       15 |                    15 |        118 |         (null) |
|      5 |       16 |                    16 |        111 |        0070317 |
|      6 |       16 |                    16 |        112 |   4642k1045917 |
|      7 |       16 |                    16 |        113 |  10235k1071417 |
|      8 |       16 |                    16 |        116 |   9948k2054917 |

2 个答案:

答案 0 :(得分:2)

您可以使用group_concat

select ...
group_concat(`wydatki`.`dokument`) as ExpenseNumber
from
join ....
group by `pracownik_bank`.id_transakcji

DEMO

答案 1 :(得分:1)

参考您提供的示例链接,您只需按pracownik_bank.id_transakcji和group_concat分组所需的字段即可。 如果你想让分隔符成为逗号,你甚至不需要改变它。

以下是适用于您的示例的查询:  Query