有两个表可以连接,关系是import
。我希望合并行的结果。
例如:
表1:联系人
1 to many
表2:文件
.------------.----------.
| contact_id | username |
:------------+----------:
| 1 | user1 |
:------------+----------:
| 2 | user2 |
:------------+----------:
| 3 | user3 |
'------------'----------'
我希望我能得到的结果:
.-------------.------------.----------.
| document_id | contact_id | filename |
:-------------+------------+----------:
| 1 | 1 | abc.txt |
:-------------+------------+----------:
| 2 | 1 | bcd.txt |
:-------------+------------+----------:
| 3 | 1 | cde.txt |
:-------------+------------+----------:
| 4 | 2 | 123,txt |
:-------------+------------+----------:
| 5 | 2 | 234.txt |
:-------------+------------+----------:
| 6 | 3 | xyz.txt |
'-------------'------------'----------'
更新:
.------------.----------.---------------------------.
| contact_id | username | filenames |
:------------+----------+---------------------------:
| 1 | user1 | abc.txt, bcd.txt, cde.txt |
:------------+----------+---------------------------:
| 2 | user2 | 123.txt, 234.txt |
:------------+----------+---------------------------:
| 3 | user3 | xyz.txt |
'------------'----------'---------------------------'
答案 0 :(得分:2)
您应该在问题上发布您的尝试,以便我们可以看到您尝试过的内容。通过这种方式,您可以很容易地将您推向正确的方向,并且让我们其他人留下您在提出问题之前已经付出一些努力的印象。 Stackoverflow不是编码服务。
要回答你的问题,
在这种情况下,您要做的是在两个表上执行INNER JOIN
,并在GROUP_CONCAT();
语句中使用MYSQL函数SELECT
。
当您查看两个表时,您有一个连贯的ID(contact_id),您应该在INNER JOIN
中使用它来将两个表链接在一起。
然后,最后,您需要相应地执行GROUP BY
到组您的结果,即通过 contact_id < group 结果 group / em>的
您的SQL看起来像这样:
SELECT
tbl_contacts.contact_id,
tbl_contacts.username,
GROUP_CONCAT(tbl_documents.filename) as file_name
FROM
tbl_contacts
INNER JOIN
tbl_documents ON tbl_contacts.contact_id = tbl_documents.contact_id
GROUP BY
tbl_contacts.contact_id