我有一个表名 tblnetworkstatus 并且有 11 列
- 身份证
- 问题名称
- 受影响的服务器
- 受影响的服务
- 问题类型
- 优先级
- 持续时间
- 状态
- 开始日期
- 结束日期
- 描述
我的表中有如下记录
id issue_name affected_server affected_service issue_type
1 testing network 2,3 6,7 failure
我从 tblproducts 和 tblserver 表中获取受影响的服务器和服务 ID 我有以下查询,其中我只获得第一个受影响的服务器名称 id = 2 和受影响的服务名称 id = 6 我想检查这两个值对于受影响的服务器 2,3 和受影响的服务 6,7,我有以下查询,请指导我
SELECT
m.issue_name,m.id ,m.issue_type ,
m.priority ,m.status,m.description ,
m.start_date,m.end_date,m.duration,
s.name as server_name,p.name as product_name
from mod_networkstatus as m
LEFT JOIN tblservers as s ON m.affected_server=s.id
LEFT JOIN tblproducts as p ON m.affected_service=p.id where m.id=1
从这里我只得到这个结果
issue_name server_name product_name
testing network Monitor Server Amazon S3
但我想要 Monitor Server,server_name 的 server1 和 Amazon S3,产品名称的托管帐户
最佳答案
尝试一下-
SELECT
m.issue_name,m.id ,m.issue_type ,
m.priority ,m.status,m.description ,
m.start_date,m.end_date,m.duration,
s.name as server_name,p.name as product_name
from mod_networkstatus as m
LEFT JOIN tblservers as s ON find_in_set(s.id,m.affected_server)
LEFT JOIN tblproducts as p ON find_in_set(p.id,m.affected_service) where m.id=1
编辑1:
SELECT
m.issue_name,m.id ,m.issue_type ,
m.priority ,m.status,m.description ,
m.start_date,m.end_date,m.duration,
GROUP_CONCAT(s.name) AS server_name,
GROUP_CONCAT(p.name) AS product_name
FROM mod_networkstatus AS m
LEFT JOIN tblservers AS s ON FIND_IN_SET(s.id,m.affected_server)
LEFT JOIN tblproducts AS p ON FIND_IN_SET(p.id,m.affected_service)
WHERE m.id=1
GROUP BY m.id
关于php mysql查询仅获取列中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263248/