如何为此编写选择查询

时间:2011-11-03 03:50:15

标签: mysql sql

我有两张这样的表

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;

2 个答案:

答案 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子句。什么的。