SQL查询:如何在同一行上列出联接的值

SQL查询:如何在同一行上列出联接的值,sql,Sql,我有一个工作列表表和一个相关表,其中包含工作列表ID和“字段标题”->“字段值”格式的每个字段值 为了得到我的作业列表,我在SQL查询中加入了表,但是由于这个原因,我在多行上得到了结果。让我举例说明 查询类似于: SELECT list.id, list.activation_date, list_field.value FROM listings AS list INNER JOIN listings_fields AS list_field ON list.id = list_fie

我有一个工作列表表和一个相关表,其中包含工作列表ID和“字段标题”->“字段值”格式的每个字段值

为了得到我的作业列表,我在SQL查询中加入了表,但是由于这个原因,我在多行上得到了结果。让我举例说明

查询类似于:

SELECT list.id, list.activation_date, list_field.value 
  FROM listings AS list
 INNER JOIN listings_fields AS list_field ON list.id = list_field.id
 WHERE list.activation_date > SOME VALUE
   AND list_field.field_id IN ('Title', 'Category')
 ORDER BY list.activation_date DESC, list_field.field_id DESC
结果如下所示:

51325   2012-07-31  Job Title 1
51325   2012-07-31  Category 1, Category 2
51324   2012-07-31  Job Title 2
51324   2012-07-31  Category 3
51323   2012-07-31  Job Title 3
51323   2012-07-31  Category 1, Category 3
我已经得到了我需要的所有数据,它们的顺序是一致的,标题第一,类别第二,但我想不出如何在一行中得到所有结果。这一定是一个众所周知的技巧的常见问题,很抱歉我还不知道

还在学习。如果有人能帮忙,我将不胜感激。:-)

类似于

SELECT list.id, list.activation_date, list_fieldJ.value,list_fieldC.value
 FROM listings AS list
 INNER JOIN listings_fields AS list_fieldJ ON list.id = list_fieldJ.id 
    and List_fieldj = 'Title'
 INNER JOIN listings_fields AS list_fieldC ON list.id = list_fieldC.id 
    and List_fieldC = 'Category'

 WHERE list.activation_date > SOME VALUE
 ORDER BY list.activation_date DESC

基本上加入一次标题,然后再加入一次类别。不用说,如果你有太多的价值类型要退出,那将是一种痛苦。以上假设一份工作总是有头衔和类别。可选的,您需要外部连接。

这是一种常见的情况,但在应用程序级别处理作业通常比在SQL级别处理作业更好。你用的是什么应用程序语言?哦,是的,当然。这里的一切都由一个健壮的应用程序来处理!我不是在修改SQL来设置jobs应用程序或其他任何东西。实际上我问这个更多是出于好奇。我试图从数据库中提取一些信息来获取系统可用性信息,但意识到我不知道如何完成上述任务。所以,我不想不必要地夸大这个问题。我真的很好奇这是否可以在SQL查询中实现。:-)有什么想法吗?@Boriana所以基本上你需要按ID分组,然后连接字符串数据,这样它就会变成51325职位1,职业1,类别2?是的,我已经尝试使用Group By了,但不知道如何连接,由于职务和类别都来自我加入的表中的“list\u field.value”列。。。当然,当我分组时,我得到的是那一行,但只有列表\字段.值列中列出的类别。将列与自身连接起来只会列出两次,它不会从下面的行中获取值。这有什么意义吗?我做错了什么?(也许我应该提供更多关于表结构的信息…?字符串聚合确实是SQL中的一项常见任务,请看以下内容:(请记住,这是SQL的TSQL风格)