Monday 3 September 2018

PHP Mysql Query does not work properly

I have a table name tblnetworkstatus and I have 11 columns

  1. Id
  2. issue_name
  3. affected_server
  4. affected_service
  5. issue_type
  6. priority
  7. duration
  8. status
  9. start_date
  10. end_date
  11. description
I am getting id in affected_server and affected_service which I am storing in my DB, now I have three situations
  1. Either both affected_server and affected_service has been selected
  2. Only affected_server is selected
  3. Only affected_service is selected
I am getting the name of affected_server and affected_service from tblserver and tblproducts respectively using join on three tables tblnetworkstatus,tblserver and tblproduct I already have the following query got from here
SELECT
    m.issue_name ,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

But If I have multiple id's of affected_server and affected_service like I am storing 1,2,3,4 in a single column affected_server or affected_service then how can I do that?

No need to use union as it will give a lots of duplicate data
What you want to achieve can be done with simple left join or inner join
    SELECT
    m.issue_name ,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


for multiple id's in one column
    SELECT
    m.issue_name ,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(m.affected_server,s.id)
    LEFT JOIN tblproducts as  p  ON  m.affected_service=p.id

See if this works for you.

0 comments:

Post a Comment