我在我的数据库下面的表格。
TABLE_EMPLOYEES
_________________________________________________
| id | name | last name | email |
-------------------------------------------------
| 1 | Henry | Smith | [email protected] |
| 2 | Scarlet | Rogers | [email protected] |
| 3 | John | Adams | [email protected] |
=================================================
TABLE_AVATAR
_________________________________
| 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 |
=================================
TABLE_DOCUMENTS
___________________________________
| 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_DOCUMENTS可以在所有的(我认为每个记录行数以及无需要获得所有行每条记录如有)。我知道我可以通过EMPLOYEE_ID连接表,但我的股票正从TABLE_AVATAR只有一条记录,并从TABLE_DOCUMENTS的所有记录。
有什么建议?
谢谢,卡洛斯
在这里,我已经使用GROUP_CONCAT组函数来获取document_ids一列。
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
员工ID
这会给你是下面提到的结果。
id name last name mail documents avatar_id
1 henry smith [email protected] NULL 101
2 scarlet rogers [email protected] 3.jpg,4.jpg,1.jpg,2.jpg 442
3 jon adam [email protected] 5.jpg,6.jpg 926
只是ZZ1,zz2所示,zz3所示取代你的表名。我想这会帮助你解决你的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句