Php MySQL。从多个共有列的表中检索数据
我的数据库中有以下表格Php MySQL。从多个共有列的表中检索数据,php,mysql,database,Php,Mysql,Database,我的数据库中有以下表格 TABLE_EMPLOYEES _________________________________________________ | id | name | last name | email | ------------------------------------------------- | 1 | Henry | Smith | henry@gmail.com | | 2 | Scarlet | Rog
TABLE_EMPLOYEES
_________________________________________________
| id | name | last name | email |
-------------------------------------------------
| 1 | Henry | Smith | henry@gmail.com |
| 2 | Scarlet | Rogers | scarlet@gmail.com |
| 3 | John | Adams | john@gmail.com |
=================================================
TABLE_头像
_________________________________
| id | employee_id | avatar_name |
---------------------------------
| 99 | 1 | henry84 |
|100 | 1 | henry84_ |
|101 | 1 | henry84- |
|442 | 2 | scarlet99 |
|924 | 3 | john-007 |
|926 | 3 | john-008 |
=================================
表2.1.1文件
___________________________________
| id | employee_id | document_name |
-----------------------------------
|124 | 2 | cv.doc |
|125 | 2 | resume.pdf |
|126 | 2 | scan-01.jpg |
|127 | 2 | dl.jpg |
|396 | 3 | cv-john.doc |
|397 | 3 | scan-2403.jpg |
===================================
我的目标是从每个员工的所有表中检索所有数据。TABLE_EMPLOYEES将包含每条记录1行(我需要所有数据),TABLE_AVATAR可以保存每条记录的多行(我只需要最新的一行(id desc)),TABLE_文档可以保存每条记录的多行,也可以根本不保存任何行(如果有,我需要获取每条记录的所有行)。我知道我可以按员工id加入表格,但我只从表格头像中获取一条记录,而从表格文档中获取所有记录
有什么建议吗
谢谢,
Carlos在这里,我使用了GROUP\u CONCAT GROUP函数将文档ID设置为一列
select employee.*,GROUP_CONCAT(documents.document_name) document_name,(SELECT MAX(id) as avatar_id from zz2 where zz2.employee_id = employee.id ) from zz1 employee LEFT JOIN zz3 documents on documents.employee_id = employee.id group by employee.id
这将为您提供下面提到的结果
id name last name mail documents avatar_id
1 henry smith henry@gmail.com NULL 101
2 scarlet rogers test2@gmail.com 3.jpg,4.jpg,1.jpg,2.jpg 442
3 jon adam test3@gmail.com 5.jpg,6.jpg 926
只需将表名替换为zz1、zz2、zz3即可。
我想这将帮助您解决问题。在这里,我使用了GROUP\u CONCAT GROUP函数将文档ID设置为一列
select employee.*,GROUP_CONCAT(documents.document_name) document_name,(SELECT MAX(id) as avatar_id from zz2 where zz2.employee_id = employee.id ) from zz1 employee LEFT JOIN zz3 documents on documents.employee_id = employee.id group by employee.id
这将为您提供下面提到的结果
id name last name mail documents avatar_id
1 henry smith henry@gmail.com NULL 101
2 scarlet rogers test2@gmail.com 3.jpg,4.jpg,1.jpg,2.jpg 442
3 jon adam test3@gmail.com 5.jpg,6.jpg 926
只需将表名替换为zz1、zz2、zz3即可。
我想这将帮助您解决问题。您到目前为止尝试了什么?从php_employees employee,php_employees_profile_avatar,php_employees_documents documents中选择employee.*,avatar.*,documents.*选择employee.*,avatar.*,documents.*显示示例数据的预期结果。3,John,亚当斯,john@gmail.com,john-008,cv-john.doc,scan-2403.jpg到目前为止您尝试了什么?从php_employees employees employees,php_employees\u profile\u avatar,php_employees\u documents中选择employee.*,avatar.*,documents.*,其中employeer.id=avatar.employeer\u id和employeer.id=documents.employeer\u ids显示所,约翰,亚当斯,john@gmail.com,john-008,cv-john.doc,scan-2403.jpg谢谢!越来越近了。然而,若查询并没有找到化身或文档,那个么它根本不会显示主记录。就像您发布的示例一样,它没有显示Henry。您预期的结果是什么?id name邮件文档avatar_id 1 Henry smithtest1@gmail.com零,零2个猩红罗杰斯test2@gmail.com1.jpg,2.jpg,3.jpg,4.jpg 442 3乔恩·亚当test3@gmail.com5.jpg,6.jpg 926ohhh好的。我以为你只想要有文档的ID。非常感谢!越来越近了。然而,若查询并没有找到化身或文档,那个么它根本不会显示主记录。就像您发布的示例一样,它没有显示Henry。您预期的结果是什么?id name邮件文档avatar_id 1 Henry smithtest1@gmail.com零,零2个猩红罗杰斯test2@gmail.com1.jpg,2.jpg,3.jpg,4.jpg 442 3乔恩·亚当test3@gmail.com5.jpg,6.jpg 926ohhh好的。我以为你只想要有文档的ID