2

我有一个工作列表表和一个相关表,其中包含工作列表 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

我已经得到了我需要的所有数据,它的排序与标题第一和类别第二一致,但我想不出如何在一行中获得所有结果。这一定是一个众所周知的技巧的通病,很抱歉我还不知道。

还在学习。如果有人可以提供帮助,我将不胜感激。:-)

4

1 回答 1

1

就像是

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

基本上加入一次标题,然后再加入类别。不用说,如果您要退出的值类型过多,那将是一件痛苦的事。以上假设工作将始终具有标题和类别。可选的,你需要一个外部连接。

于 2012-07-31T21:06:36.880 回答