首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回具有多个值的字段的多个标签

返回具有多个值的字段的多个标签
EN

Stack Overflow用户
提问于 2014-03-28 01:08:22
回答 1查看 42关注 0票数 1

我有一个函数,它运行并从一个查找表中获取存储在特定表中的值的标签。当有1个值时,它会正确显示。但是,当有多个值时,它只返回第一个值。例如:

代码语言:javascript
复制
Lookup table is

| Tel_No| Tel_type |
--------------------
|   1   |  Info    |
|   2   |  Support |
|   3   |  Call    |

Main table is

| TelephoneCalls |
------------------
|  1,3           |
|  3             |
|  1,2,3         |

我目前拥有的用于匹配1值的函数是

代码语言:javascript
复制
 function getMonitoring($monitoring){
$query = "SELECT Tel_type FROM TelephoneCalls Where Tel_no = '$monitoring'";
$result9 =mysql_query($query) or die(mysql_error());
list($Tel_type) = mysql_fetch_array($result9, MYSQL_NUM);   
    return $Tel_type;
                }

如何才能让它列出如下所示的值

代码语言:javascript
复制
If 1, 3      then display      Info, Call 
If 3         display      Call
If 1, 2, 3   display      Info, Support, Call

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 01:37:18

我猜评论触及到了这一点,但您真的应该将您的模式更改为更多的多对多关系,而不是在字段中使用CSV值。如果不能,则此查询应该可以工作:

代码语言:javascript
复制
SELECT telephonecalls, GROUP_CONCAT(tel_type) 
FROM lookup_table
LEFT JOIN main_table ON  FIND_IN_SET(tel_no , replace(TelephoneCalls,' ', '')) > 0 
GROUP BY telephonecalls;

#outputs
+----------------+------------------------+
| telephonecalls | GROUP_CONCAT(tel_type) |
+----------------+------------------------+
| 1,2,3          | Info,Support,Call      |
| 1,3            | Info,Call              |
| 3              | Call                   |
+----------------+------------------------+

http://sqlfiddle.com/#!2/194fd/1/0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22694508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档