我有两张这样的表
job(id,title,location,...)
job_page(id,id_job,id_page,page_name)
例如,我想编写一个select查询来填充包含以下列的表:
+_______+________+__________+_______+
|Job Id | Titlte | Location | Page |
+_______+________+__________+_______+
|1 | Hot job| Somewhere| Page1 |
| | | | Page2 |
+_______+________+__________+_______+
如何为此编写选择查询?
我试过了,但并不像我预期的那样:
SELECT jp.page_name,j.* FROM jobs j
LEFT JOIN job_pages jp ON jp.id_job = j.id
GROUP BY j.id;
答案 0 :(得分:1)
您需要使用group_concat
:
SELECT j.id, j.title, j.location, group_concat(jp.page_name)
FROM jobs j LEFT JOIN job_pages jp ON jp.id_job = j.id
GROUP BY j.id, j.title, j.location;
在MySQL中,您可以缩写GROUP BY:
SELECT j.id, j.title, j.location, group_concat(jp.page_name)
FROM jobs j LEFT JOIN job_pages jp ON jp.id_job = j.id
GROUP BY j.id;
但这确实会让像我这样的多数据库用户感到困扰。
答案 1 :(得分:1)
如果我理解正确,您希望将所有“页面”放入单个单元格中。我想你唯一缺少的是j.page_name上的GROUP_CONCAT。如果是用于网络或其他东西,您也可以使用设置为< br />的SEPARATOR子句。什么的。