【发布时间】:2014-02-01 09:58:39
【问题描述】:
我有一个 MySQL 查询,它将被转换为 JSON 并在 Obj C 中用于每个具有特定 ID 的用户。我相信这是一个 MySQL 难题,但 JSON 中可能有答案。我不会问很多问题,所以我会尽量使其简洁。
这是一个用户值的屏幕截图。如果您注意到,field_id 可能会有所不同,因为并非所有信息都是必需的,因此对于给定的 user_id,id 字段的值将从 3 到 8 不等:
我必须查询结果 GROUP BY column1 (user_id),但只有 WHERE column2 (field_id) 具有以下值 field_id='18' 和 field='19',然后(大问题)我需要用 column3(值)的两个值填充一个 GROUP 中的结果,以便我可以在一个 JSON 对象中获得结果。
我已经知道如何转换为 JSON 以在 iOS 中使用,但我只能得到它以将结果作为两个对象提供给我。
我当前的查询
$query = "SELECT * FROM table1 WHERE field_id='18' OR field_id='19' ORDER BY user_id ";
当前结果
[{"id":"5","user_id":"461","field_id":"18","value":"1_MX4zNjcxNzM5Mn4x...","access":"0"},
{"id":"6","user_id":"461","field_id":"19","value":"T1==cGFydG5lcl9pZD0...","access":"0"},
{"id":"11","user_id":"463","field_id":"18","value":"1_MX4zNjcxNzM...","access":"0"},
{"id":"12","user_id":"463","field_id":"19","value":"T1==cGFydG5lcl9...","access":"0"}]
我需要将两个具有匹配 user_id 字段的 JSON 对象作为一个对象,其结果将 field='18' 值与 field='19' 值区分开来。比如:
[{"id":"5","user_id":"461","field_id":"18","value18":"1_MX4zNjcxNzM5Mn4x...","value19":"T1==cGFydG5lcl9pZD0...","access":"0"},
{"id":"11","user_id":"463","field_id":"18","value18":"1_MX4zNjcxNzM...","value19":"T1==cGFydG5lcl9...","access":"0"}]
或
[{"id":"5","user_id":"461","field_id='18'":"1_MX4zNjcxNzM5Mn4x...","field='19'":"T1==cGFydG5lcl9pZD0...","access":"0"},
{"id":"11","user_id":"463","field_id='18'":"1_MX4zNjcxNzM...","field='19'":"T1==cGFydG5lcl9...","access":"0"}]
谢谢...
【问题讨论】:
-
检查mysql group_concat dev.mysql.com/doc/refman/5.0/en/…
-
+1 写得很好的问题
-
@AbhikChakraborty 我尝试使用 GROUP_CONCAT,正如 Kay Nelson 在下面建议的那样,略有承诺。但如您所见,GROUP BY 没有达到将 user_id 字段分组的预期结果,这是创建一个对象的主要目标......