我们在谷歌地图上工作,每个用户都带有标记。
我们有一个输入字段,访问者可以在其中搜索用户。我们想使用自动完成插件(coolautosugest)来自动完成用户名。
插件需要SQL请求才能获取名称。有一个保存用户名的表的例子:
field_id | user_id | value
1 | 2 | Doe
35 | 2 | John
1 | 14 | Obama
35 | 14 | Barack
其中field_id 1是姓,而field_id 35是名字
自动填充插件需要什么:
user_id | name
2 | John Doe
14 | Barack Obama
我们现在的SQL请求是:
SELECT user_id, value FROM wp_sokatira_bp_xprofile_data WHERE field_id=35 OR field_id=1
结果是:
user_id | value
2 | Doe
2 | John
14 | Obama
14 | Barack
使用SQL的人比我们更好有解决方案吗?
谢谢,
BenjaminDubé(和其他三个同学)
答案 0 :(得分:1)
您可以使用GROUP_CONCAT
功能。此外,我不知道你为什么分开名字和姓氏,但由于这不是一个问题,这里是一个简单的查询示例
SELECT user_id, GROUP_CONCAT(value ORDER BY field_id DESC SEPARATOR ' ') AS value
FROM `wp_sokatira_bp_xprofile_data`
GROUP BY user_id
答案 1 :(得分:0)
试试这个:
SELECT user_id, GROUP_CONCAT(value ORDER BY field_id DESC SEPARATOR ' ') as name
FROM wp_sokatira_bp_xprofile_data
WHERE field_id=35 OR field_id=1
GROUP BY user_id
我方的建议:
您可以在where子句中使用IN
:
SELECT user_id, GROUP_CONCAT(value ORDER BY field_id DESC SEPARATOR ' ') as name
FROM wp_sokatira_bp_xprofile_data
WHERE field_id IN (35,1)
GROUP BY user_id
修改强>
使用LIKE
,如下所示:
SELECT user_id, GROUP_CONCAT(value ORDER BY field_id DESC SEPARATOR ' ') as name
FROM wp_sokatira_bp_xprofile_data
WHERE field_id IN (35,1) AND ColName LIKE %$test%
GROUP BY user_id
参数化变量$test
。