【问题标题】:php mysql query getting only first value in columnphp mysql查询仅获取列中的第一个值
【发布时间】:2015-07-07 08:17:18
【问题描述】:

我有一个表名 tblnetworkstatus,我有 11 列

  1. 身份证
  2. 问题名称
  3. affected_server
  4. affected_service
  5. issue_type
  6. 优先级
  7. 持续时间
  8. 状态
  9. 开始日期
  10. 结束日期
  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,server1 用于 server_name 和 Amazon S3,托管帐户用于产品名称

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试看-

    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
    

    【讨论】:

    • 它给了我可能的结果,但在不同的行中,但我希望在具有相同列的单行中 server_name=Monitor Server,server1
    • 使用 group_concat 函数在同一行获取结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多