连接元组sql

时间:2014-04-28 13:50:56

标签: mysql sql phpmyadmin

我们在谷歌地图上工作,每个用户都带有标记。

我们有一个输入字段,访问者可以在其中搜索用户。我们想使用自动完成插件(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é(和其他三个同学)

2 个答案:

答案 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