php mysql查询只获取列中的第一个值

时间:2015-07-07 08:17:18

标签: php mysql

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

  1. 编号
  2. issue_name
  3. affected_server
  4. affected_service
  5. ISSUE_TYPE
  6. 优先
  7. 持续时间
  8. 状态
  9. 起始日期
  10. END_DATE
  11. 描述
  12. 我的表格中有以下记录

    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,托管产品名称的帐户

1 个答案:

答案 0 :(得分:0)

试一试 -

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

EDIT1:

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